日期:2014-05-16 浏览次数:20508 次
package com.zzx.study.jdbc; 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.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * * @ClassName: GenerateJavaBeanUtil * @Description: TODO 根据表生成JavaBean * @author A18ccms a18ccms_gmail_com * @date 2012-11-11 上午12:55:54 * */ public class GenerateJavaBeanUtil { private static final Log log = LogFactory.getLog(GenerateJavaBeanUtil.class); private String tableName;// 表名 private String[] colnames; // 列名数组 private String[] colTypes; // 列名类型数组 private int[] colSizes; // 列名大小数组 private boolean f_util = false; // 是否需要导入包java.util.Date private boolean f_sql = false; // 是否需要导入包java.sql.* private String dataBaseUrl = "jdbc:mysql://localhost:3306/ismp0"; private String userName = "root"; private String password = "mysql"; private String driver = "com.mysql.jdbc.Driver"; private String packagePath; public void generateJavaBean() { Connection con = null; String sql = "select * from " + tableName; PreparedStatement pStemt = null; PrintWriter pw =null; try { try { Class.forName(driver); } catch (ClassNotFoundException e1) { log.error(e1); } con = DriverManager.getConnection(dataBaseUrl, userName, password); 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, packagePath); try { File directory = new File(""); String path = this.getClass().getResource("").getPath(); log.info("Generate JavaBean path="+path); log.info("src/?/" + path.substring(path.lastIndexOf("/com/", path.length()))); FileWriter fw = new FileWriter(directory.getAbsolutePath() + "/src/" + path.substring( path.lastIndexOf("/com/", path.length()), path.length()) + initcap(tableName) + ".java"); pw = new PrintWriter(fw); pw.println(content); pw.flush(); pw.close(); log.info("Generate Success!"); } catch (IOException e) { log.error(e); } } catch (SQLException e) { log.error(e); } finally { try { con.close(); pStemt.close(); pw.close(); } catch (SQLException e) { log.error(e); } } } /** * @Title: parse * @Description: TODO 更加列,类型,生成 JAVABEAN * @param colnames * @param colTypes * @param colSizes * @param packagePath * @return * @return String 返回类型 * @throws */ private String parse(String[] colnames, String[] colTypes, int[] colSizes, String packagePath) { StringBuffer sb = new StringBuffer(); if (f_util) { sb.append("import java.util.Date;\r\n"); } if (f_sql) { sb.append("import java.sql.*;\r\n"); } sb.append("package ").append(packagePath).append(";"); sb.append("\r\n\r\n"); sb.append("/**\r\n"); sb.append("* " + tableName + " 实体类\r\n"); sb.append("* " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "\r\n"); sb.append("* create by GenerateJavaBeanUtil " + "\r\n"); sb.append("*/ \r"); sb.append("public class " + initcap(tableName) + "{\r\n"); processAllAttrs(sb);// 属性 processAllMethod(