根据数据库字段生成实体类


根据数据库中字段类型自动转换为实体类中的属性

缩短生成实体类的时间

package common;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import MetaDataUtil;

/**
 * 根据数据库表名生成po属性
 *
 */
public class BuildPoByTableUtil {

    /**
     * 根据传入的数据库表名,生成po属性,会过滤掉VERSION_
     * 以_结尾的会去掉_ 例如:数据库字段名称 id_,实体类属性名称:id
     * 以_分割的,会以_分割,分割后的字符串数组从第二个字符串开始首字母大写,然后再组成最终的属性名称 
     * 例 :数据库字段名称unit_name,实体类属性名称:unitName
     * @param tableName
     */
    public static void buildPoByTable(String tableName){
        Connection con = getJdbcConn();
        Statement st = null;
        ResultSet rs = null;
        String sql = "select * from "+tableName;
        try {
            st = con.createStatement();
            rs = st.executeQuery(sql);
            ResultSetMetaData md = rs.getMetaData();
            for(int i = 1;i<=md.getColumnCount();i++){
                String columnName = md.getColumnName(i);
                String columnType = md.getColumnTypeName(i);
                columnName = lowerCaseChar(columnName);
                int xsws = md.getScale(i);//小数点右边的位数
                //改造字段名称
                if(columnName.endsWith("_")){
                    columnName = columnName.replace('_', ' ');
                    
                }else if(columnName.contains("_")){
                    String[] tempName = columnName.split("_");
                    String tempstr = "";
                    for(int j=1;j<tempName.length;j++){
                        tempName[j] = PoFormConverseUtil.upCaseFirstChar(tempName[j]);
                        tempstr = tempstr+tempName[j];
                    }
                    columnName = tempName[0]+tempstr;
                }
                
                if("VERSION_".equals(columnName)){
                    continue;
                }else{
                    if("VARCHAR2".equals(columnType)||"NVARCHAR2".equals(columnType)){
                        System.out.println("private String "+columnName+";");
                    }else if("NUMBER".equals(columnType)){
                        if(xsws==0){
                            System.out.println("private Integer "+columnName+";");
                        }else if(xsws>0){
                            System.out.println("private Double "+columnName+";");
                        }
                    }else if("DATE".equals(columnType)){
                        System.out.println("private Date "+columnName+";");
                    }else if("CLOB".equals(columnType)){
                        System.out.println("private String "+columnName+";");
                    }
                }

            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                con.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }

/**
* 获得数据库连接
* @return
*/
    public static Connection getJdbcConn(){
 Connection con = null; try { String name = "/jdbc.properties"; Properties p = new Properties(); InputStream in = MetaDataUtil.class.getResourceAsStream(name); p.load(in); String url = p.getProperty("jdbc.url"); String username = p.getProperty("jdbc.username"); String password = p.getProperty("jdbc.password"); String driverName = p.getProperty("jdbc.driverClassName"); Class.forName(driverName); //System.out.println("加载驱动成功!"); //获取数据库连接
            con = DriverManager.getConnection(url, username, password); //System.out.println("获取数据库连接成功!"); //System.out.println("进行数据库操作!");
 } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } return con; }


/**
* 字符串大写换小写
* @param str
* @return
*/
public static String lowerCaseChar(String str){
char[] chars = str.toCharArray(); for(int i=0;i<chars.length;i++){ if (chars[i] >= 'A' && chars[i] <= 'Z') { chars[i] = (char)(chars[i] + 32); } } return new String(chars); } public static void main(String[] args) { buildPoByTable("t_wxfw_zb_sq"); } }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM