快下班了,写点东西吧,
这个小工具写的有几个月了,中间做个小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
相关推荐
数据库表结构文档自动生成工具; 1.增加了对excel文件的支持,可以同时生成word 和excel文件 2.运行方式DocMain.java ExcelMain.java 3.生成excel文件的模板需要特别注意:xls模板中行数必须足够大,eg.ss:...
基于eclipse上,ssm项目,可根据数据库表自动生成SQL、实体类、mapper文件工具
TableGo可以根据数据库表结构自动生成JavaBean、MyBaits的Mapper映射配置文件、数据库设计文档,更重要的是可以根据每个项目的不同开发框架编写自定义模板生成各模块的结构性代码,让开发人员的开发效率提高60%以上...
1、本地执行代码生成工具,可生成controller、service、repository、entity、mapper、mapper.xml的增删改查代码。生成的文件复制到项目路径中,修修改改即可实现大部分CRUD功能。 2、工具不需要导入到项目中,本地...
13、修复使用MySQL数据库生成的数据长度不正确的问题 14、生成自定义文件功能可以不配置数据源,不选择自定义模板生成文件,可单独用于文件操作,只要不选择模板,JSON参数中也不配置模板就不会连数据库 15、修复...
1.根据Mysql数据库的表生成java实体类,包括注释 2.将Excel表格数据生成java实体类,包括注释 3.包括源文件和生成好的jar工具,和示例文件 技术: java、log4j、poi表格操作、jdbc数据库操作、freeMarker模板使用
改进如下: 1. 增加了多数据类型的支持; 2. 增加了toJson 方法,可以将对象转换为 json数据格式;...7. 完美支持数据库注解自动生成到配置文件和JAVABEAN 下个版本的计划: 1.增加数据库列表功能 2.增加主键策略
支持oracle 和 mysql两种数据库。 支持oracle指定表空间生成。 支持批量生成javabean。 支持重写“toString”方法(返回json格式字符串)。 支持国际化。 支持返回字段属性数组。 支持java元注释。 支持生成...
根据自定义模板通过数据库表、视图和存储过程批量生成代码, 模板编辑和代码查看支持语法高亮 (Java, VB, T-SQL) 可以新增语法文件,文件格式类似于 EditPlus 软件附带模板包括: VB 三层结构中实体和...
数据库表配置,用于自定义生成器模板引用的table变量,配置文件必须存放在classpath: generator_config/table/table_name.xml (该文件生成器可以生成,自己再自定义修改) <!-- <数据库表名 className="类名称" ...
配置好数据库连接字符串和输出路径,自动把MySQL数据表生成相应的Java实体类。附上数据库。来源是参考别人的代码,有添加了自动获取表名的功能,不需要手动写表名,非常方便。
SSM 把数据库表自动生成实体类 DAO 映射XML文件。该工具类有我自己的修改。支持一件清除已经生成的类垃圾文件
10、生成自定义文件功能增强,添加更多可配置的参数 11、修复生成数据库文档中有中文错误的问题 12、优化对MySQL8.x的支持,现在可以使用MySQL8的新驱动包了 13、优化界面显示效果并让所有界面都能用鼠标拖动...
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
3、 然后双击 “代码生成器.jar" (和运行.exe文件一样)mybatis自动生成工具generator,提高开发效率,自动生成实体BEAN、DAO。需要修改数据库驱动包位置,数据库链接URL、用户名、密码需要修改: 生成模型的包...
一. 生成器模板路径可以引用相关变量 ... 数据库表配置,用于自定义生成器模板引用的table变量,配置文件必须存放在classpath: generator_config/table/table_name.xml (该文件生成器可以生成,自己再自定义修改)
9、生成数据库文档功能新增生成标题目录功能。 10、新增主要UI界面的界面大小配置功能,可根据需求在配置文件中调整UI界面大小。 11、新增友情捐赠界面,项目的发展离不开您的支持,无论捐赠金额多少都足够表达您...
java代码实现cad图纸,自动生成工程cad施工图纸,可以按比例生成A3,A2,A1图纸,最大的优点的子定义,以及使用了ssm框架,直接对数据库进行交互,满足对cad图纸的要求
项目概述:这是一个基于SpringBoot的数据库文档自动生成工具,旨在通过简单的配置,快速生成详尽的数据库文档。该项目采用Java语言开发,包含39个文件,其中Java源文件22个,辅助以HTML、图像资源以及配置文件等。 ...
根据数据名称自动生成Java代码,生成mapper(xml文件)、Dao文件(entity、mapper、service、serviceImpl、controller)文件 2、适用用范围 数据库:MySQL5.7.16 代码运行环境:MyEclipse2019+Java8 3、运行命令 ...