表生成實體類

package com.rongdu.core.domain;java

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;mysql

import com.rongdu.common.util.DateUtil;sql

public class GetDomain {數據庫

 public static void main(String[] args) {app

  String table_name = "dw_borrow";//表名 
  String authorName = "cx";//做者名字 
  String packageOutPath = "com.rongdu.core.domain";//指定實體生成所在包的路徑
  String folderPath = "E://";//生成文件路徑
     //數據庫鏈接
  String table_schema = "p2p2.0";
  String user = "root";
  String password = "";
  String url = "jdbc:mysql://localhost/p2p2.0?useUnicode=true&characterEncoding=utf8";  
  
  Connection conn = null;
  Statement stmt = null;
  StringBuffer all = new StringBuffer();
  StringBuffer allAttrs = new StringBuffer();
  StringBuffer allMethod = new StringBuffer();
  String className = toUpper(table_name.substring(3)) ;dom

  try {
   Class.forName("com.mysql.jdbc.Driver"); // 加載mysq驅動
  } catch (ClassNotFoundException e) {
   e.printStackTrace();// 打印出錯詳細信息
  }this

  try {
   conn = DriverManager.getConnection(url, user, password);
  } catch (SQLException e) {
   e.printStackTrace();
  }url

  try {
   stmt = conn.createStatement();
   String sql = "SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT FROM INFORMATION_SCHEMA. `COLUMNS` WHERE table_name = '"
     + table_name + "'  AND table_schema = '" + table_schema + "'";
   ResultSet rs = stmt.executeQuery(sql);
   while (rs.next()) {
    String columnName = rs.getString("COLUMN_NAME");
    String dataType = rs.getString("DATA_TYPE");
    String columnComment = rs.getString("COLUMN_COMMENT");
    processAttrs(allAttrs, columnName, dataType, columnComment);
    processMethod(allMethod, columnName, dataType, columnComment);
   }
   
   all.append("package " + packageOutPath + ";\r\n"); 
   all.append("\r\n"); 
         //註釋部分 
   all.append("/**\r\n"); 
   all.append(" * "+table_name+" 實體類\r\n"); 
   all.append(" * \r\n");
   all.append(" * @author "+authorName+"\r\n");
   all.append(" * @version 1.0\r\n");
   all.append(" * @since "+DateUtil.dateStr2(new Date())+"\r\n"); 
   all.append(" */ \r\n"); 
         //實體部分 
   all.append("public class " + className + " {\r\n");
   all.append(allAttrs.toString());
   all.append(allMethod.toString());
   all.append("}\r\n");
            try { 
                FileWriter fw = new FileWriter(folderPath +className+ ".java"); 
                PrintWriter pw = new PrintWriter(fw); 
                pw.println(all.toString()); 
                pw.flush(); 
                pw.close(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    stmt.close();
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }.net

  }
 }code

 /**
  * 「_」+小寫 轉成大寫字母
  *
  * @param str
  * @return
  */
 private static String toUpper(String str) {
  char[] charArr = str.toCharArray();
  StringBuffer sb = new StringBuffer();
  sb.append(String.valueOf(charArr[0]).toUpperCase());
  for (int i = 1; i < charArr.length; i++) {
   if (charArr[i] == '_') {
    sb.append(String.valueOf(charArr[i + 1]).toUpperCase());
    i = i + 1;
   } else {
    sb.append(charArr[i]);
   }
  }
  return sb.toString();
 }

 /**
  * 功能:生成屬性
  *
  * @param sb
  * @param columnName
  * @param dataType
  * @param columnComment
  */
 private static void processAttrs(StringBuffer sb, String columnName, String dataType, String columnComment) {
  sb.append("\t/** " + columnComment + " */\r\n");
  sb.append("\tprivate " + sqlType2JavaType(dataType) + " " + columnName + ";\r\n");

 }

 /**
  * 功能:生成方法
  *
  * @param sb
  * @param columnName
  * @param dataType
  * @param columnComment
  */
 private static void processMethod(StringBuffer sb, String columnName, String dataType, String columnComment) {

  // get方法
  sb.append("\r\n");
  sb.append("\t/**\r\n");
  sb.append("\t * 獲取" + columnComment + "\r\n");
  sb.append("\t * \r\n");
  sb.append("\t * @return " + columnComment + "\r\n");
  sb.append("\t */\r\n");
  sb.append("\tpublic " + sqlType2JavaType(dataType) + " get" + initcap(columnName) + "(){\r\n");
  sb.append("\t\treturn " + columnName + ";\r\n");
  sb.append("\t}\r\n");

  // set方法
  sb.append("\r\n");
  sb.append("\t/**\r\n");
  sb.append("\t * 設置" + columnComment + "\r\n");
  sb.append("\t * \r\n");
  sb.append("\t * @param " + columnName + " 要設置的" + columnComment + "\r\n");
  sb.append("\t */\r\n");
  sb.append("\tpublic void set" + initcap(columnName) + "(" + sqlType2JavaType(dataType) + " " + columnName
    + "){\r\n");
  sb.append("\t\tthis." + columnName + "=" + columnName + ";\r\n");
  sb.append("\t}\r\n");

 }

 /**
  * 功能:將輸入字符串的首字母改爲大寫
  *
  * @param str
  * @return
  */
 private static String initcap(String str) {
  char[] ch = str.toCharArray();
  if (ch[0] >= 'a' && ch[0] <= 'z') {
   ch[0] = (char) (ch[0] - 32);
  }

  return new String(ch);
 }

 /**
  * 功能:得到列的數據類型
  *
  * @param sqlType
  * @return
  */
 private static String sqlType2JavaType(String sqlType) {

  if (sqlType.equalsIgnoreCase("bit")) {
   return "boolean";
  } else if (sqlType.equalsIgnoreCase("tinyint")) {
   return "byte";
  } else if (sqlType.equalsIgnoreCase("smallint")) {
   return "short";
  } else if (sqlType.equalsIgnoreCase("int")) {
   return "int";
  } else if (sqlType.equalsIgnoreCase("bigint")) {
   return "long";
  } else if (sqlType.equalsIgnoreCase("float")) {
   return "float";
  } else if (sqlType.equalsIgnoreCase("decimal") || sqlType.equalsIgnoreCase("numeric")
    || sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money")
    || sqlType.equalsIgnoreCase("smallmoney") || sqlType.equalsIgnoreCase("double")) {
   return "double";
  } else if (sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")
    || sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")
    || sqlType.equalsIgnoreCase("text")) {
   return "String";
  } else if (sqlType.equalsIgnoreCase("datetime")) {
   return "Date";
  } else if (sqlType.equalsIgnoreCase("image")) {
   return "Blod";
  }

  return null;
 }

}

相關文章
相關標籤/搜索