请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

欣东微医疗技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 413|回复: 0

一个生成pojo的小程序

[复制链接]

670

主题

806

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
38570
QQ
发表于 2018-4-24 11:35:57 | 显示全部楼层 |阅读模式
用 hibernate tools生成pojo要一次生成全部的表,慢还容易错,写个简陋的小程序生成一下,只判断了自己用的几种数据类型,如果有其他类型用getColumnTypeName获取一下,即rsmd.getColumnTypeName(k+1),下面是实现代码:
package org.eastwill.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class CreatePojo {
    private static String dbURL ="jdbc:   oracle:   thin:   @   192.168.100.200:    1521   :  oracle";
    private static String driverName ="oracle.jdbc.driver.OracleDriver";
    private static String userName ="hsp";
    private static String password ="密码";
    public static Connection getConnection() throws java.sql.SQLException {
        try {Class.forName(driverName);
            Connection connection = DriverManager.getConnection(dbURL,userName, password);
            return connection;
        } catch (ClassNotFoundException ex) {
            throw new SQLException(ex.getMessage());
        } catch (Exception e) {
            throw new SQLException(e.getMessage());
        }
    }
    public static void createPojo(String tableName) {
        try {
            Connection conn = getConnection();
            String sql ="select * from "+ tableName +" where 1=2";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();
            for (int k = 0; k < columnCount; k++) {
                if("VARCHAR2".equals(rsmd.getColumnTypeName(k+1))){
                    System.out.println("private String "+ rsmd.getColumnName(k+1).toLowerCase() +";");
                }else if("NUMBER".equals(rsmd.getColumnTypeName(k+1))){
                    System.out.println("private Double "+ rsmd.getColumnName(k+1).toLowerCase() +";");
                }else if("TIMESTAMP".equals(rsmd.getColumnTypeName(k+1))){
                    System.out.println("private Date "+ rsmd.getColumnName(k+1).toLowerCase() +";");
                }else {
                    System.out.println("private String "+ rsmd.getColumnName(k+1).toLowerCase() +";");
                }
               
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        createPojo("FEE_DETAIL");
    }

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|eastwill.org  

GMT+8, 2018-9-22 20:39 , Processed in 0.094855 second(s), 26 queries .

Powered by Eastwill! X3.2

© 2001-2013 Eastwill Inc.

快速回复 返回顶部 返回列表