闲着没事,写了一个从表生成javabean的工具类,大家可以在此基础进行发散。
?
第一步建立jdbc数据库连接
/** * 获取连接 * @return */ public static Connection getConnection(){ try { Class.forName("oracle.jdbc.OracleDriver"); String url = "jdbc:oracle:thin:@10.20.128.115:1526:d0rsapp"; String username = "elisdata"; String password = "ilovetong"; return DriverManager.getConnection(url, username, password); } catch (Exception e) { e.printStackTrace(); } return null; }
?第二步:获取表结构信息
/** * 获取某个表的表结构 * @param tableName * @return */ public static List<Map<String,Object>> getTableStructure(String tableName){ List<Map<String,Object>> structureList = new ArrayList<Map<String,Object>>(); try { DatabaseMetaData metaData = getConnection().getMetaData(); //获取数据库产品类型 String databaseProductName = metaData.getDatabaseProductName(); //结构获取方式 Statement statement = getConnection().createStatement(); ResultSet rs = statement.executeQuery("select * from "+tableName); ResultSetMetaData rsmd = rs.getMetaData(); System.out.println(rsmd.getColumnCount()); Map<String,Object> structure = null; for (int i = 0; i < rsmd.getColumnCount(); i++) { structure = new HashMap<String, Object>(); String columnName = rsmd.getColumnName(i+1); String fieldName = getFieldName(columnName); String className = rsmd.getColumnClassName(i+1); String fieldType = Class.forName(className).getSimpleName(); fieldType = getFieldType(fieldType); structure.put("columnName", columnName); structure.put("fieldName", fieldName); structure.put("fieldType", fieldType); structure.put("columnClassName", rsmd.getColumnClassName(i+1)); structure.put("columnDisplaySize", rsmd.getColumnDisplaySize(i+1)); structureList.add(structure); } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return structureList; } private static String getFieldType(String fieldType) { if("Timestamp".equals(fieldType)){ return "String"; }else if("BigDecimal".equals(fieldType)){ return "BigDecimal"; } return "String"; } /** * 将数据库字段转换成bean属性 * @param columnName * @return */ private static String getFieldName(String columnName) { char[] columnCharArr = columnName.toLowerCase().toCharArray(); StringBuffer sb = new StringBuffer(); int ad = -1; for (int i = 0; i < columnCharArr.length; i++) { char cur = columnCharArr[i]; if(cur==‘_‘){ ad = i; }else{ if((ad+1)==i&&ad!=-1){ sb.append(Character.toUpperCase(cur)); }else{ sb.append(cur); } ad=-1; } } return sb.toString(); }
?第三,生成javaBean
/** * 从表结构中去生成javabean * @param structureList * @param beanName * @return */ public static String genJavaBeanFromTableStructure(List<Map<String,Object>> structureList,String beanName){ StringBuffer sb = new StringBuffer(); try { sb.append("public class "+toFirstCharUpCase(beanName)+" {\r\n"); for (Map<String, Object> structure : structureList) { sb.append(" private "+structure.get("fieldType")+" "+structure.get("fieldName")+";\r\n"); } sb.append("\r\n"); //get set for (Map<String, Object> structure : structureList) { sb.append( "\tpublic String get"+toFirstCharUpCase((String) structure.get("fieldName"))+"() {\r\n" + "\t\treturn "+structure.get("fieldName")+";\r\n" + "\t}\r\n" + "\r\n" + "\tpublic void set"+toFirstCharUpCase((String) structure.get("fieldName"))+"(String "+structure.get("fieldName")+") {\r\n" + "\t\t"+structure.get("fieldName")+" = "+structure.get("fieldName")+";\r\n" + "\t}\r\n\r\n"); } sb.append("}\r\n"); } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } public static String toFirstCharUpCase(String str){ char[] columnCharArr = str.toCharArray(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < columnCharArr.length; i++) { char cur = columnCharArr[i]; if(i==0){ sb.append(Character.toUpperCase(cur)); }else{ sb.append(cur); } } return sb.toString(); }
?最后:测试结果
public static void main(String[] args) { System.out.println(getConnection()); List<Map<String,Object>> structureList = getTableStructure("t_user");
String beanName = getFieldName("t_user".replace("t_", "")); System.out.println(genJavaBeanFromTableStructure(structureList,beanName)); }
?
原文:http://lushuifa.iteye.com/blog/2312674