mysql数据库 package com.s9.common.web; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Date; public class GenEntityMysql { private String packageOutPath = "com.s9.cfj.user.entity";//指定实体生成所在包的路径 private String authorName = "郑云飞";//作者名字 private String tablename = "cfj_user";//表名 private String[] colnames; // 列名数组 private String[] colTypes; //列名类型数组 private int[] colSizes; //列名大小数组 private boolean f_util = false; // 是否需要导入包java.util.* private boolean f_sql = false; // 是否需要导入包java.sql.* //数据库连接 private static final String URL ="jdbc:mysql://localhost:3306/caifujie"; private static final String NAME = "root"; private static final String PASS = "root"; private static final String DRIVER ="com.mysql.jdbc.Driver"; /* * 构造函数 */ public GenEntityMysql(){ //创建连接 Connection con; //查要生成实体类的表 String sql = "select * from " + tablename; PreparedStatement pStemt = null; try { try { Class.forName(DRIVER); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } con = DriverManager.getConnection(URL,NAME,PASS); pStemt = con.prepareStatement(sql); ResultSetMetaData rsmd = pStemt.getMetaData(); int size = rsmd.getColumnCount(); //统计列 colnames = new String[size]; colTypes = new String[size]; colSizes = new int[size]; for (int i = 0; i < size; i++) { colnames[i] = rsmd.getColumnName(i + 1); colTypes[i] = rsmd.getColumnTypeName(i + 1); if(colTypes[i].equalsIgnoreCase("datetime")){ f_util = true; } if(colTypes[i].equalsIgnoreCase("image") || colTypes[i].equalsIgnoreCase("text")){ f_sql = true; } colSizes[i] = rsmd.getColumnDisplaySize(i + 1); } String content = parse(colnames,colTypes,colSizes); try { File directory = new File(""); //System.out.println("绝对路径:"+directory.getAbsolutePath()); //System.out.println("相对路径:"+directory.getCanonicalPath()); String path=this.getClass().getResource("").getPath(); System.out.println(path); System.out.println("src/?/"+path.substring(path.lastIndexOf("/com/", path.length())) ); // String outputPath = directory.getAbsolutePath()+ "/src/"+path.substring(path.lastIndexOf("/com/", path.length()), path.length()) + initcap(tablename) + ".java"; String outputPath = directory.getAbsolutePath()+ "/src/"+this.packageOutPath.replace(".", "/")+"/"+initcap(tablename) + ".java"; FileWriter fw = new FileWriter(outputPath); PrintWriter pw = new PrintWriter(fw); pw.println(content); pw.flush(); pw.close(); } catch (IOException e) { e.printStackTrace(); } } catch (SQLException e) { e.printStackTrace(); } finally{ // try { // con.close(); // } catch (SQLException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } } /** * 功能:生成实体类主体代码 * @param colnames * @param colTypes * @param colSizes * @return */ private String parse(String[] colnames, String[] colTypes, int[] colSizes) { StringBuffer sb = new StringBuffer(); sb.append("package " + this.packageOutPath + ";\r\n"); //判断是否导入工具包 if(f_util){ sb.append("import java.util.Date;\r\n"); } if(f_sql){ sb.append("import java.sql.*;\r\n"); } sb.append("\r\n"); //注释部分 sb.append(" /**\r\n"); sb.append(" * "+tablename+" 实体类\r\n"); sb.append(" * "+new Date()+" "+this.authorName+"\r\n"); sb.append(" */ \r\n"); //实体部分 sb.append("\r\n\r\npublic class " + initcap(tablename) + "{\r\n"); processAllAttrs(sb);//属性 processAllMethod(sb);//get set方法 sb.append("}\r\n"); //System.out.println(sb.toString()); return sb.toString(); } /** * 功能:生成所有属性 * @param sb */ private void processAllAttrs(StringBuffer sb) { for (int i = 0; i < colnames.length; i++) { sb.append("\tprivate " + sqlType2JavaType(colTypes[i]) + " " + colnames[i] + ";\r\n"); } } /** * 功能:生成所有方法 * @param sb */ private void processAllMethod(StringBuffer sb) { for (int i = 0; i < colnames.length; i++) { sb.append("\tpublic void set" + initcap(colnames[i]) + "(" + sqlType2JavaType(colTypes[i]) + " " + colnames[i] + "){\r\n"); sb.append("\tthis." + colnames[i] + "=" + colnames[i] + ";\r\n"); sb.append("\t}\r\n"); sb.append("\tpublic " + sqlType2JavaType(colTypes[i]) + " get" + initcap(colnames[i]) + "(){\r\n"); sb.append("\t\treturn " + colnames[i] + ";\r\n"); sb.append("\t}\r\n"); } } /** * 功能:将输入字符串的首字母改成大写 * @param str * @return */ private 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 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")){ 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; } /** * 出口 * TODO * @param args */ public static void main(String[] args) { new GenEntityMysql(); } }
oracle数据库
01.package com.db.gen.entity.tool; 02. 03. 04.import java.io.File; 05.import java.io.FileWriter; 06.import java.io.IOException; 07.import java.io.PrintWriter; 08.import java.sql.Connection; 09.import java.sql.DriverManager; 10.import java.sql.PreparedStatement; 11.import java.sql.ResultSet; 12.import java.sql.ResultSetMetaData; 13.import java.sql.SQLException; 14.import java.sql.Statement; 15.import java.util.Date; 16. 17.public class GenEntityOracle { 18. 19. private String packageOutPath = "com.user.entity";//指定实体生成所在包的路径 20. private String authorName = "郑云飞";//作者名字 21. private String tablename = "emp";//表名 22. private String[] colnames; // 列名数组 23. private String[] colTypes; //列名类型数组 24. private int[] colSizes; //列名大小数组 25. private boolean f_util = false; // 是否需要导入包java.util.* 26. private boolean f_sql = false; // 是否需要导入包java.sql.* 27. 28. //数据库连接 29. private static final String URL ="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"; 30. private static final String NAME = "scrot"; 31. private static final String PASS = "tiger"; 32. private static final String DRIVER ="oracle.jdbc.driver.OracleDriver"; 33. 34. /* 35. * 构造函数 36. */ 37. public GenEntityOracle(){ 38. //创建连接 39. Connection con; 40. //查要生成实体类的表 41. String sql = "select * from " + tablename; 42. Statement pStemt = null; 43. try { 44. try { 45. Class.forName(DRIVER); 46. } catch (ClassNotFoundException e1) { 47. // TODO Auto-generated catch block 48. e1.printStackTrace(); 49. } 50. con = DriverManager.getConnection(URL,NAME,PASS); 51. pStemt = (Statement) con.createStatement(); 52. ResultSet rs = pStemt.executeQuery(sql); 53. ResultSetMetaData rsmd = rs.getMetaData(); 54. int size = rsmd.getColumnCount(); //统计列 55. colnames = new String[size]; 56. colTypes = new String[size]; 57. colSizes = new int[size]; 58. for (int i = 0; i < size; i++) { 59. colnames[i] = rsmd.getColumnName(i + 1); 60. colTypes[i] = rsmd.getColumnTypeName(i + 1); 61. 62. if(colTypes[i].equalsIgnoreCase("date") || colTypes[i].equalsIgnoreCase("timestamp")){ 63. f_util = true; 64. } 65. if(colTypes[i].equalsIgnoreCase("blob") || colTypes[i].equalsIgnoreCase("char")){ 66. f_sql = true; 67. } 68. colSizes[i] = rsmd.getColumnDisplaySize(i + 1); 69. } 70. 71. String content = parse(colnames,colTypes,colSizes); 72. 73. try { 74. File directory = new File(""); 75. //System.out.println("绝对路径:"+directory.getAbsolutePath()); 76. //System.out.println("相对路径:"+directory.getCanonicalPath()); 77. String path=this.getClass().getResource("").getPath(); 78. 79. System.out.println(path); 80. System.out.println("src/?/"+path.substring(path.lastIndexOf("/com/", path.length())) ); 81.// String outputPath = directory.getAbsolutePath()+ "/src/"+path.substring(path.lastIndexOf("/com/", path.length()), path.length()) + initcap(tablename) + ".java"; 82. String outputPath = directory.getAbsolutePath()+ "/src/"+this.packageOutPath.replace(".", "/")+"/"+initcap(tablename) + ".java"; 83. FileWriter fw = new FileWriter(outputPath); 84. PrintWriter pw = new PrintWriter(fw); 85. pw.println(content); 86. pw.flush(); 87. pw.close(); 88. } catch (IOException e) { 89. e.printStackTrace(); 90. } 91. 92. } catch (SQLException e) { 93. e.printStackTrace(); 94. } finally{ 95.// try { 96.// con.close(); 97.// } catch (SQLException e) { 98.// // TODO Auto-generated catch block 99.// e.printStackTrace(); 100.// } 101. } 102. } 103. 104. /** 105. * 功能:生成实体类主体代码 106. * @param colnames 107. * @param colTypes 108. * @param colSizes 109. * @return 110. */ 111. private String parse(String[] colnames, String[] colTypes, int[] colSizes) { 112. StringBuffer sb = new StringBuffer(); 113. 114. //判断是否导入工具包 115. if(f_util){ 116. sb.append("import java.util.Date;\r\n"); 117. } 118. if(f_sql){ 119. sb.append("import java.sql.*;\r\n"); 120. } 121. sb.append("package " + this.packageOutPath + ";\r\n"); 122. sb.append("\r\n"); 123. //注释部分 124. sb.append(" /**\r\n"); 125. sb.append(" * "+tablename+" 实体类\r\n"); 126. sb.append(" * "+new Date()+" "+this.authorName+"\r\n"); 127. sb.append(" */ \r\n"); 128. //实体部分 129. sb.append("\r\n\r\npublic class " + initcap(tablename) + "{\r\n"); 130. processAllAttrs(sb);//属性 131. processAllMethod(sb);//get set方法 132. sb.append("}\r\n"); 133. 134. //System.out.println(sb.toString()); 135. return sb.toString(); 136. } 137. 138. /** 139. * 功能:生成所有属性 140. * @param sb 141. */ 142. private void processAllAttrs(StringBuffer sb) { 143. 144. for (int i = 0; i < colnames.length; i++) { 145. sb.append("\tprivate " + sqlType2JavaType(colTypes[i]) + " " + colnames[i] + ";\r\n"); 146. } 147. 148. } 149. 150. /** 151. * 功能:生成所有方法 152. * @param sb 153. */ 154. private void processAllMethod(StringBuffer sb) { 155. 156. for (int i = 0; i < colnames.length; i++) { 157. sb.append("\tpublic void set" + initcap(colnames[i]) + "(" + sqlType2JavaType(colTypes[i]) + " " + 158. colnames[i] + "){\r\n"); 159. sb.append("\tthis." + colnames[i] + "=" + colnames[i] + ";\r\n"); 160. sb.append("\t}\r\n"); 161. sb.append("\tpublic " + sqlType2JavaType(colTypes[i]) + " get" + initcap(colnames[i]) + "(){\r\n"); 162. sb.append("\t\treturn " + colnames[i] + ";\r\n"); 163. sb.append("\t}\r\n"); 164. } 165. 166. } 167. 168. /** 169. * 功能:将输入字符串的首字母改成大写 170. * @param str 171. * @return 172. */ 173. private String initcap(String str) { 174. 175. char[] ch = str.toCharArray(); 176. if(ch[0] >= 'a' && ch[0] <= 'z'){ 177. ch[0] = (char)(ch[0] - 32); 178. } 179. 180. return new String(ch); 181. } 182. 183. /** 184. * 功能:获得列的数据类型 185. * @param sqlType 186. * @return 187. */ 188. private String sqlType2JavaType(String sqlType) { 189. 190. if(sqlType.equalsIgnoreCase("binary_double")){ 191. return "double"; 192. }else if(sqlType.equalsIgnoreCase("binary_float")){ 193. return "float"; 194. }else if(sqlType.equalsIgnoreCase("blob")){ 195. return "byte[]"; 196. }else if(sqlType.equalsIgnoreCase("blob")){ 197. return "byte[]"; 198. }else if(sqlType.equalsIgnoreCase("char") || sqlType.equalsIgnoreCase("nvarchar2") 199. || sqlType.equalsIgnoreCase("varchar2")){ 200. return "String"; 201. }else if(sqlType.equalsIgnoreCase("date") || sqlType.equalsIgnoreCase("timestamp") 202. || sqlType.equalsIgnoreCase("timestamp with local time zone") 203. || sqlType.equalsIgnoreCase("timestamp with time zone")){ 204. return "Date"; 205. }else if(sqlType.equalsIgnoreCase("number")){ 206. return "Long"; 207. } 208. 209. return "String"; 210. } 211. 212. /** 213. * 出口 214. * TODO 215. * @param args 216. */ 217. public static void main(String[] args) { 218. 219. new GenEntityOracle(); 220. 221. } 222. 223.}
相关推荐
java 从数据库表反射出实体类,自动生成实体类
由JAVA的实体类反生成数据库表。
java将数据库表反射成java实体类xml中sql语句,如果使用的mybatis,生成基于原生的xml中sql操作语句,如insert、select、update语句。
sqlserver数据库中的表通过hibernate反射生成的的实体类, 通过代码生成oracle数据库的表
主要介绍了利用JAVA反射,读取数据库表名,自动生成对应实体类的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要介绍了Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
一个简单的JAVA版的DAO生成器,通过反射机制获取bean实体类属性,前提是bean属性都有自动生成的getters和setters。 数据库支持MySQL 如果需要使用其他数据库,修改daoCreator.Util.DBUtil 使用方法介绍在test下的...
一个简单的JAVA版的DAO生成器,通过反射机制获取bean实体类属性,前提是bean属性都有自动生成的getters和setters。 之前由于一个bean实体类就要写一个DAO,实在是没有效率,就想了这个方法,反射机制获取私有属性的...
3、新增选择实体注解功能,生成实体的时候自动为实体添加额外的注解。 4、弹出对话框界面大小调整。 5、新增数据源添加默认设置。 6、精确匹配在点更多时,已选中的表会在弹出的列表中被勾选中。 7、修复模糊...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....
第1章 Java应用分层架构及软件模型 1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 ...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....
一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握内部类和接口的概念 54.StringTokenizer类的使用 55.数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? ...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....