根據數據庫字段生成實體類


根據數據庫中字段類型自動轉換為實體類中的屬性

縮短生成實體類的時間

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