快下班了,写点东西吧,
这个小工具写的有几个月了,中间做个小demo的时候还用到了,
自我感觉用着挺爽的,很小,一个类,很快,全自动,很方便,直接修改配置就行。
不多说了。
package com.base;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
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.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author q821424508@sina.com
* @version 1.0
*
*/
public class Table2Entity {
private static String Entity2Store = "src/com/hung/model";// 以项目名为根目录
//private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='common' AND NOT table_name LIKE 'sys%'";
private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='common' ";
private static List<String> tables = new ArrayList<String>();
private static String url = "jdbc:mysql://127.0.0.1/common?useUnicode=true&characterEncoding=utf8";
private static String driver = "com.mysql.jdbc.Driver";
private static String username = "admin";
private static String password = "123456";
private static String sql = "select * from ";
private static String author = "q821424508";
private static Connection conn = null;
private static Statement stat = null;
public static void main(String[] args) {
System.out.println("---begin---");
init();
table2Entity();
System.out.println("---end---");
}
/**
*/
private static void init() {
File f = new File(Entity2Store);
if (!f.exists()) {
f.mkdirs();
}
}
/**
*/
private static void table2Entity() {
tables = getTables();
if (null != tables && tables.size() > 0) {
for (String tableName : tables) {
doTable2Entity(tableName);
}
}
}
/**
*/
private static void doTable2Entity(String tableName) {
String sql1 = sql + tableName;
System.out.println("tableName = " + tableName + "\n");
conn = getConn();
try {
stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql1);
ResultSetMetaData metaDate = rs.getMetaData();
int count = metaDate.getColumnCount();
File classFile = getCF(tableName);
FileWriter fw = new FileWriter(classFile, true);
BufferedWriter bw = new BufferedWriter(fw);
StringBuffer sbFields = new StringBuffer();
//toString 方法
StringBuffer toString = new StringBuffer("\tpublic String toString(){\n");
toString.append("\t\tString str=\"{");
for (int j = 0; j < count; j++) {
String columnName = metaDate.getColumnName(j + 1);
int type = metaDate.getColumnType(j + 1);
System.out.println(columnName + " : " + type);
sbFields.append(column2field(columnName, type));
toString.append(""+column2fieldName(columnName)+":'\" + "+column2fieldName(columnName)+" + \"',\" + \"");
}
bw.write(sbFields.toString());
//toString.replace(toString.length()-1, toString.length(), "");
toString.replace(toString.length()-8, toString.length(), "");
toString.append("\"'}\";\n");
toString.append("\t\treturn str;\n\t}\n");
bw.write(toString.toString());
bw.write("\n}\n");
bw.close();
fw.close();
System.out.println("---------------------------------");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param columnName
* @param type
* @return
*/
private static String column2field(String columnName, int type) {
String field = "";
String getseter = "";
String fieldName = column2fieldName(columnName);
field = getField(fieldName, type);
getseter = getGetseter(fieldName, type);
return field + "\n" + getseter;
}
/**
* @param columnName
* @param type
* @return
*/
private static String getGetseter(String columnName, int type) {
String filedName = firstChar2Upper(columnName);
StringBuffer sb = new StringBuffer("");
switch (type) {
case Types.BIGINT:
sb.append("\tpublic long get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(long ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.INTEGER:
sb.append("\tpublic int get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(int ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.CHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.DATE:
sb.append("\tpublic Date get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(Date ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.DOUBLE:
sb.append("\tpublic double get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(double ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.FLOAT:
sb.append("\tpublic float get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(float ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.LONGNVARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.LONGVARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.NVARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.SMALLINT:
sb.append("\tpublic int get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(int ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.TIMESTAMP:
sb.append("\tpublic Date get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(Date ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.TINYINT:
sb.append("\tpublic int get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(int ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.NUMERIC:
sb.append("\tpublic long get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(long ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.VARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.BLOB:
sb.append("\tpublic byte[] get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(byte[] ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
default:
break;
}
return sb.toString();
}
/**
* @param columnName
* @param type
* @return
*/
private static String getField(String columnName, int type) {
StringBuffer sb = new StringBuffer("\tprivate ");
switch (type) {
case Types.BIGINT:
sb.append("long ").append(columnName);
break;
case Types.INTEGER:
sb.append("int ").append(columnName);
break;
case Types.NUMERIC:
sb.append("long ").append(columnName);
break;
case Types.CHAR:
sb.append("String ").append(columnName);
break;
case Types.DATE:
sb.append("Date ").append(columnName);
break;
case Types.DOUBLE:
sb.append("double ").append(columnName);
break;
case Types.FLOAT:
sb.append("float ").append(columnName);
break;
case Types.LONGNVARCHAR:
sb.append("String ").append(columnName);
break;
case Types.LONGVARCHAR:
sb.append("String ").append(columnName);
break;
case Types.NVARCHAR:
sb.append("String ").append(columnName);
break;
case Types.SMALLINT:
sb.append("int ").append(columnName);
break;
case Types.TIMESTAMP:
sb.append("Date ").append(columnName);
break;
case Types.TINYINT:
sb.append("int ").append(columnName);
break;
case Types.VARCHAR:
sb.append("String ").append(columnName);
break;
case Types.BLOB:
sb.append("byte[] ").append(columnName);
break;
default:
System.err.println("columnName = " + columnName + " : type = "
+ type);
break;
}
sb.append(";\n");
return sb.toString();
}
/**
* @param tableName
* @return
*/
private static File getCF(String tableName) {
File classFile = new File(Entity2Store + File.separator
+ table2EntityName(tableName) + ".java");
try {
FileWriter fw = new FileWriter(classFile);
BufferedWriter bw = new BufferedWriter(fw);
String cr = getCopyRight();
String packagePath = getPachagePath();
String importPath = getImportPath();
String clazzName = getClassName(tableName);
bw.write(cr);
bw.write(packagePath);
bw.write(importPath);
bw.write(clazzName);
bw.flush();
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
return classFile;
}
/**
* @param tableName
* @return
*/
private static String getClassName(String tableName) {
String className = table2EntityName(tableName);
className = "public class " + className + " implements Serializable{\n";
className += "\n\t" + "private static final long serialVersionUID ="
+ (tableName + (Math.random() * 90000000 + 10000000)).hashCode()+"l";
className += ";\n\n";
return className;
}
/**
* @param tableName
* @return
*/
private static String table2EntityName(String tableName) {
tableName = column2fieldName(tableName);
tableName = firstChar2Upper(tableName);
return tableName;
}
/**
* @param tableName
* @return
*/
private static String firstChar2Upper(String tableName) {
String firstChar = tableName.substring(0, 1);
String entityName = tableName.replaceFirst(firstChar, firstChar
.toUpperCase());
return entityName;
}
/**
* @param tableName
* @return
*/
private static String column2fieldName(String columnName) {
columnName = columnName.toLowerCase();
while (columnName.contains("_")) {
int i = columnName.indexOf('_');
String char2Upper = columnName.substring(i + 1, i + 2);
columnName = columnName.replaceFirst("_" + char2Upper, char2Upper
.toUpperCase());
}
while (columnName.contains("-")) {
int i = columnName.indexOf('-');
String char2Upper = columnName.substring(i + 1, i + 2);
columnName = columnName.replaceFirst("-" + char2Upper, char2Upper
.toUpperCase());
}
return columnName;
}
/**
* @return
*/
private static String getImportPath() {
StringBuffer sb = new StringBuffer();
sb.append("import java.io.Serializable;\n");
sb.append("import java.util.Date;\n\n");
return sb.toString();
}
/**
* @return
*/
private static String getPachagePath() {
return "package " + Entity2Store.replace("src/", "").replace('/', '.')
+ ";\n\n";
}
/**
* @return
*/
private static String getCopyRight() {
StringBuffer cr = new StringBuffer("/**");
cr.append("\n");
cr.append("*/");
cr.append("\n");
cr.append("\n");
cr.append("\n");
return cr.toString();
}
/**
* @return
*/
private static List<String> getTables() {
conn = getConn();
try {
stat = conn.createStatement();
ResultSet rs = stat.executeQuery(tablesSql);
while (rs.next()) {
tables.add(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
return tables;
}
/**
* @return
*/
private static Connection getConn() {
if (null != conn) {
return conn;
}
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
// end
其实这小工具早就想放出来了,但是考虑下,netbean自带的有这个工具,eclipse好像也有(需要插件)
myeclipse更不用说了,必须有,不过要是不知道的人,用着也挺不方便,
为什么要写这个东西?
我们开发的时候用的是eclipse,尝试了安装插件来完成,但是没有成功,之前在上家公司的时候,boss用一个晚上搞出来的东西,自己也想试试,其实自从boss写出来之后一直有这个冲动,boss是用python写的,
这次做项目的机会,自己写了一个,
总共花费2天不到的时间吧,看来boss就是boss,不得不服
先说明一下,这个小工具并不是支持全部sql类型,有需要的可以自己扩充,
原来我想把这个工具优化一下,写成配置文件的方式,后来就一拖再拖,直到现在。
欢迎随便转发,使用,修改,不过请注明原文出出。
欢迎拍砖,
附加:
DB2查询所有表明的sql:select tabname from syscat.tables where tabschema ='DB2ADMIN' and tabname like '%TMP1'
-------------------------------------------------------------------------------------------------------------
今天更新个小版本,添加对Types.REAL类型的支持,
今天测试时,在mysql里面,mysql的数据类型是float,
所以代码里面也按照Types.REAL对应float来做的
同时实现了,包名和文件路径不同的设置,如果不单独设置包名,则默认和文件路径相同
package com.areashop;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
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.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author q821424508@sina.com
* @version 1.1
*
*/
public class Table2Entity {
private static String pakagePath="model";
private static String Entity2Store = "src/main/java/model";// 以项目名为根目录
//private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='common' AND NOT table_name LIKE 'sys%'";
private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='property' ";
private static List<String> tables = new ArrayList<String>();
private static String url = "jdbc:mysql://127.0.0.1/property?useUnicode=true&characterEncoding=utf8";
private static String driver = "com.mysql.jdbc.Driver";
private static String username = "root";
private static String password = "";
private static String sql = "select * from ";
private static String author = "q821424508";
private static Connection conn = null;
private static Statement stat = null;
public static void main(String[] args) {
System.out.println("---begin---");
init();
table2Entity();
System.out.println("---end---");
}
/**
*/
private static void init() {
File f = new File(Entity2Store);
if (!f.exists()) {
f.mkdirs();
}
}
/**
*/
private static void table2Entity() {
tables = getTables();
if (null != tables && tables.size() > 0) {
for (String tableName : tables) {
doTable2Entity(tableName);
}
}
}
/**
*/
private static void doTable2Entity(String tableName) {
String sql1 = sql + tableName;
System.out.println("tableName = " + tableName + "\n");
conn = getConn();
try {
stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql1);
ResultSetMetaData metaDate = rs.getMetaData();
int count = metaDate.getColumnCount();
File classFile = getCF(tableName);
FileWriter fw = new FileWriter(classFile, true);
BufferedWriter bw = new BufferedWriter(fw);
StringBuffer sbFields = new StringBuffer();
//toString 方法
StringBuffer toString = new StringBuffer("\tpublic String toString(){\n");
toString.append("\t\tString str=\"{");
for (int j = 0; j < count; j++) {
String columnName = metaDate.getColumnName(j + 1);
int type = metaDate.getColumnType(j + 1);
System.out.println(columnName + " : " + type);
sbFields.append(column2field(columnName, type));
toString.append(""+column2fieldName(columnName)+":'\" + "+column2fieldName(columnName)+" + \"',\" + \"");
}
bw.write(sbFields.toString());
//toString.replace(toString.length()-1, toString.length(), "");
toString.replace(toString.length()-8, toString.length(), "");
toString.append("\"'}\";\n");
toString.append("\t\treturn str;\n\t}\n");
bw.write(toString.toString());
bw.write("\n}\n");
bw.close();
fw.close();
System.out.println("---------------------------------");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param columnName
* @param type
* @return
*/
private static String column2field(String columnName, int type) {
String field = "";
String getseter = "";
String fieldName = column2fieldName(columnName);
field = getField(fieldName, type);
getseter = getGetseter(fieldName, type);
return field + "\n" + getseter;
}
/**
* @param columnName
* @param type
* @return
*/
private static String getGetseter(String columnName, int type) {
String filedName = firstChar2Upper(columnName);
StringBuffer sb = new StringBuffer("");
switch (type) {
case Types.BIGINT:
sb.append("\tpublic long get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(long ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.INTEGER:
sb.append("\tpublic int get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(int ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.CHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.DATE:
sb.append("\tpublic Date get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(Date ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.DOUBLE:
sb.append("\tpublic double get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(double ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.FLOAT:
sb.append("\tpublic float get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(float ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.REAL:
sb.append("\tpublic float get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(float ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.LONGNVARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.LONGVARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.NVARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.SMALLINT:
sb.append("\tpublic int get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(int ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.TIMESTAMP:
sb.append("\tpublic Date get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(Date ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.TINYINT:
sb.append("\tpublic int get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(int ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.NUMERIC:
sb.append("\tpublic long get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(long ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.VARCHAR:
sb.append("\tpublic String get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(String ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
case Types.BLOB:
sb.append("\tpublic byte[] get");
sb.append(filedName);
sb.append("(){\n");
sb.append("\t\treturn ");
sb.append("this.");
sb.append(columnName);
sb.append(";\n");
sb.append("\t}\n");
sb.append("\tpublic void set");
sb.append(filedName);
sb.append("(byte[] ");
sb.append(columnName);
sb.append("){\n");
sb.append("\t\t");
sb.append("this.");
sb.append(columnName);
sb.append("=" + columnName);
sb.append(";\n");
sb.append("\t}\n\n");
break;
default:
break;
}
return sb.toString();
}
/**
* @param columnName
* @param type
* @return
*/
private static String getField(String columnName, int type) {
StringBuffer sb = new StringBuffer("\tprivate ");
switch (type) {
case Types.BIGINT:
sb.append("long ").append(columnName);
break;
case Types.INTEGER:
sb.append("int ").append(columnName);
break;
case Types.NUMERIC:
sb.append("long ").append(columnName);
break;
case Types.CHAR:
sb.append("String ").append(columnName);
break;
case Types.DATE:
sb.append("Date ").append(columnName);
break;
case Types.DOUBLE:
sb.append("double ").append(columnName);
break;
case Types.FLOAT:
sb.append("float ").append(columnName);
break;
case Types.REAL:
sb.append("float ").append(columnName);
break;
case Types.LONGNVARCHAR:
sb.append("String ").append(columnName);
break;
case Types.LONGVARCHAR:
sb.append("String ").append(columnName);
break;
case Types.NVARCHAR:
sb.append("String ").append(columnName);
break;
case Types.SMALLINT:
sb.append("int ").append(columnName);
break;
case Types.TIMESTAMP:
sb.append("Date ").append(columnName);
break;
case Types.TINYINT:
sb.append("int ").append(columnName);
break;
case Types.VARCHAR:
sb.append("String ").append(columnName);
break;
case Types.BLOB:
sb.append("byte[] ").append(columnName);
break;
default:
System.err.println("columnName = " + columnName + " : type = "
+ type);
break;
}
sb.append(";\n");
return sb.toString();
}
/**
* @param tableName
* @return
*/
private static File getCF(String tableName) {
File classFile = new File(Entity2Store + File.separator
+ table2EntityName(tableName) + ".java");
try {
FileWriter fw = new FileWriter(classFile);
BufferedWriter bw = new BufferedWriter(fw);
String cr = getCopyRight();
String packagePath = getPachagePath();
String importPath = getImportPath();
String clazzName = getClassName(tableName);
bw.write(cr);
bw.write(packagePath);
bw.write(importPath);
bw.write(clazzName);
bw.flush();
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
return classFile;
}
/**
* @param tableName
* @return
*/
private static String getClassName(String tableName) {
String className = table2EntityName(tableName);
className = "public class " + className + " implements Serializable{\n";
className += "\n\t" + "private static final long serialVersionUID ="
+ (tableName + (Math.random() * 90000000 + 10000000)).hashCode()+"l";
className += ";\n\n";
return className;
}
/**
* @param tableName
* @return
*/
private static String table2EntityName(String tableName) {
tableName = column2fieldName(tableName);
tableName = firstChar2Upper(tableName);
return tableName;
}
/**
* @param tableName
* @return
*/
private static String firstChar2Upper(String tableName) {
String firstChar = tableName.substring(0, 1);
String entityName = tableName.replaceFirst(firstChar, firstChar
.toUpperCase());
return entityName;
}
/**
* @param tableName
* @return
*/
private static String column2fieldName(String columnName) {
columnName = columnName.toLowerCase();
while (columnName.contains("_")) {
int i = columnName.indexOf('_');
String char2Upper = columnName.substring(i + 1, i + 2);
columnName = columnName.replaceFirst("_" + char2Upper, char2Upper
.toUpperCase());
}
while (columnName.contains("-")) {
int i = columnName.indexOf('-');
String char2Upper = columnName.substring(i + 1, i + 2);
columnName = columnName.replaceFirst("-" + char2Upper, char2Upper
.toUpperCase());
}
return columnName;
}
/**
* @return
*/
private static String getImportPath() {
StringBuffer sb = new StringBuffer();
sb.append("import java.io.Serializable;\n");
sb.append("import java.util.Date;\n\n");
return sb.toString();
}
/**
* @return
*/
private static String getPachagePath() {
if(null!=pakagePath){
return "package " +pakagePath.replace('/', '.')+ ";\n\n";
}
return "package " + Entity2Store.replace("src/", "").replace('/', '.')
+ ";\n\n";
}
/**
* @return
*/
private static String getCopyRight() {
StringBuffer cr = new StringBuffer("/**");
cr.append("\n");
cr.append("*/");
cr.append("\n");
cr.append("\n");
cr.append("\n");
return cr.toString();
}
/**
* @return
*/
private static List<String> getTables() {
conn = getConn();
try {
stat = conn.createStatement();
ResultSet rs = stat.executeQuery(tablesSql);
while (rs.next()) {
tables.add(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
return tables;
}
/**
* @return
*/
private static Connection getConn() {
if (null != conn) {
return conn;
}
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
// end