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;
}
}