diff --git a/build.gradle b/build.gradle index 597437e..97a80c3 100644 --- a/build.gradle +++ b/build.gradle @@ -51,7 +51,7 @@ uploadArchives { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } pom.project { - version '1.2.4' + version '1.2.6' artifactId ARTIFACT_Id groupId GROUP_ID packaging TYPE diff --git a/build/classes/java/main/com/taover/codegenerate/bazhuayun/GenerateCode.class b/build/classes/java/main/com/taover/codegenerate/bazhuayun/GenerateCode.class index 095c36c..9ccd271 100644 Binary files a/build/classes/java/main/com/taover/codegenerate/bazhuayun/GenerateCode.class and b/build/classes/java/main/com/taover/codegenerate/bazhuayun/GenerateCode.class differ diff --git a/src/main/java/com/taover/codegenerate/bazhuayun/GenerateCode.java b/src/main/java/com/taover/codegenerate/bazhuayun/GenerateCode.java index 35bb117..ce60d7f 100644 --- a/src/main/java/com/taover/codegenerate/bazhuayun/GenerateCode.java +++ b/src/main/java/com/taover/codegenerate/bazhuayun/GenerateCode.java @@ -18,7 +18,7 @@ import com.taover.codegenerate.db.Tools; import freemarker.template.Configuration; import freemarker.template.Template; -public class GenerateCode { +public class GenerateCode { public static void main(String args[]){ try { generate("com.taover.wxorder", "ALL", "D:"+File.separator+"dblist", "127.0.0.1", "3306", "tylife", "lexi365", "8zyun_wxorder"); @@ -46,26 +46,40 @@ public class GenerateCode { //取数据库连接 Connection conn = getConnection(host, port, user, password, dbName); //初始化要生成的表列表 - List tableNameList = new ArrayList(); - - if ("ALL".equalsIgnoreCase(tableNameStr) ) { - String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '"+dbName+"'"; - ResultSet rs = Tools.executeQuery(Tools.createStmt(conn), sql); - if (null == rs) return ; - try { - while (rs.next()) { - tableNameList.add(rs.getString("Table_name")); - } - } catch (SQLException e) { - e.printStackTrace(); - } - Tools.close(rs); - } else { - String[] TableNameArr = tableNameStr.split(","); - for (int i = 0; i < TableNameArr.length; i++) - tableNameList.add(TableNameArr[i]); + List tableNameList = getListTableName(tableNameStr, dbName, conn); + for (int i = 0; i < tableNameList.size(); i++) { + + String tableNameCurr = (String) tableNameList.get(i); + + //取得表中所有列 + Vector columnsInTable = TableColumn.GetTableInfo(conn, dbName, tableNameCurr, "%", "mysql"); + if (columnsInTable == null || columnsInTable.size() == 0) { + System.out.println(tableNameCurr + " : 生成失败,得不到表中列明"); + continue; + } + TableColumn pkcolum = TableColumn.getPKColum(columnsInTable); + if (pkcolum == null) { + System.out.println(tableNameCurr + " : 生成失败,未设置主键"); + continue; + } + + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); + generateDto(srcPath, apiModel); + generateEntity(srcPath, apiModel); + generateManageController(srcPath, apiModel); + generateV1Controller(srcPath, apiModel); + generateRepository(srcPath, apiModel); + generateService(srcPath, apiModel); + generateVo(srcPath, apiModel); } - + System.out.println("处理完成"); + } + + public static void generateDto(String basePackage, String tableNameStr, String srcPath, String host, String port, String user, String password, String dbName) throws Exception{ + //取数据库连接 + Connection conn = getConnection(host, port, user, password, dbName); + //初始化要生成的表列表 + List tableNameList = getListTableName(tableNameStr, dbName, conn); for (int i = 0; i < tableNameList.size(); i++) { String tableNameCurr = (String) tableNameList.get(i); @@ -82,18 +96,198 @@ public class GenerateCode { continue; } - ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); generateDto(srcPath, apiModel); + } + System.out.println("处理完成"); + } + + public static void generateEntity(String basePackage, String tableNameStr, String srcPath, String host, String port, String user, String password, String dbName) throws Exception{ + //取数据库连接 + Connection conn = getConnection(host, port, user, password, dbName); + //初始化要生成的表列表 + List tableNameList = getListTableName(tableNameStr, dbName, conn); + for (int i = 0; i < tableNameList.size(); i++) { + + String tableNameCurr = (String) tableNameList.get(i); + + //取得表中所有列 + Vector columnsInTable = TableColumn.GetTableInfo(conn, dbName, tableNameCurr, "%", "mysql"); + if (columnsInTable == null || columnsInTable.size() == 0) { + System.out.println(tableNameCurr + " : 生成失败,得不到表中列明"); + continue; + } + TableColumn pkcolum = TableColumn.getPKColum(columnsInTable); + if (pkcolum == null) { + System.out.println(tableNameCurr + " : 生成失败,未设置主键"); + continue; + } + + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); generateEntity(srcPath, apiModel); + } + System.out.println("处理完成"); + } + + public static void generateControllerManage(String basePackage, String tableNameStr, String srcPath, String host, String port, String user, String password, String dbName) throws Exception{ + //取数据库连接 + Connection conn = getConnection(host, port, user, password, dbName); + //初始化要生成的表列表 + List tableNameList = getListTableName(tableNameStr, dbName, conn); + for (int i = 0; i < tableNameList.size(); i++) { + + String tableNameCurr = (String) tableNameList.get(i); + + //取得表中所有列 + Vector columnsInTable = TableColumn.GetTableInfo(conn, dbName, tableNameCurr, "%", "mysql"); + if (columnsInTable == null || columnsInTable.size() == 0) { + System.out.println(tableNameCurr + " : 生成失败,得不到表中列明"); + continue; + } + TableColumn pkcolum = TableColumn.getPKColum(columnsInTable); + if (pkcolum == null) { + System.out.println(tableNameCurr + " : 生成失败,未设置主键"); + continue; + } + + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); generateManageController(srcPath, apiModel); + } + System.out.println("处理完成"); + } + + public static void generateControllerV1(String basePackage, String tableNameStr, String srcPath, String host, String port, String user, String password, String dbName) throws Exception{ + //取数据库连接 + Connection conn = getConnection(host, port, user, password, dbName); + //初始化要生成的表列表 + List tableNameList = getListTableName(tableNameStr, dbName, conn); + for (int i = 0; i < tableNameList.size(); i++) { + + String tableNameCurr = (String) tableNameList.get(i); + + //取得表中所有列 + Vector columnsInTable = TableColumn.GetTableInfo(conn, dbName, tableNameCurr, "%", "mysql"); + if (columnsInTable == null || columnsInTable.size() == 0) { + System.out.println(tableNameCurr + " : 生成失败,得不到表中列明"); + continue; + } + TableColumn pkcolum = TableColumn.getPKColum(columnsInTable); + if (pkcolum == null) { + System.out.println(tableNameCurr + " : 生成失败,未设置主键"); + continue; + } + + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); generateV1Controller(srcPath, apiModel); + } + System.out.println("处理完成"); + } + + public static void generateRepository(String basePackage, String tableNameStr, String srcPath, String host, String port, String user, String password, String dbName) throws Exception{ + //取数据库连接 + Connection conn = getConnection(host, port, user, password, dbName); + //初始化要生成的表列表 + List tableNameList = getListTableName(tableNameStr, dbName, conn); + for (int i = 0; i < tableNameList.size(); i++) { + + String tableNameCurr = (String) tableNameList.get(i); + + //取得表中所有列 + Vector columnsInTable = TableColumn.GetTableInfo(conn, dbName, tableNameCurr, "%", "mysql"); + if (columnsInTable == null || columnsInTable.size() == 0) { + System.out.println(tableNameCurr + " : 生成失败,得不到表中列明"); + continue; + } + TableColumn pkcolum = TableColumn.getPKColum(columnsInTable); + if (pkcolum == null) { + System.out.println(tableNameCurr + " : 生成失败,未设置主键"); + continue; + } + + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); generateRepository(srcPath, apiModel); + } + System.out.println("处理完成"); + } + + public static void generateService(String basePackage, String tableNameStr, String srcPath, String host, String port, String user, String password, String dbName) throws Exception{ + //取数据库连接 + Connection conn = getConnection(host, port, user, password, dbName); + //初始化要生成的表列表 + List tableNameList = getListTableName(tableNameStr, dbName, conn); + for (int i = 0; i < tableNameList.size(); i++) { + + String tableNameCurr = (String) tableNameList.get(i); + + //取得表中所有列 + Vector columnsInTable = TableColumn.GetTableInfo(conn, dbName, tableNameCurr, "%", "mysql"); + if (columnsInTable == null || columnsInTable.size() == 0) { + System.out.println(tableNameCurr + " : 生成失败,得不到表中列明"); + continue; + } + TableColumn pkcolum = TableColumn.getPKColum(columnsInTable); + if (pkcolum == null) { + System.out.println(tableNameCurr + " : 生成失败,未设置主键"); + continue; + } + + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); generateService(srcPath, apiModel); + } + System.out.println("处理完成"); + } + + public static void generateVo(String basePackage, String tableNameStr, String srcPath, String host, String port, String user, String password, String dbName) throws Exception{ + //取数据库连接 + Connection conn = getConnection(host, port, user, password, dbName); + //初始化要生成的表列表 + List tableNameList = getListTableName(tableNameStr, dbName, conn); + for (int i = 0; i < tableNameList.size(); i++) { + + String tableNameCurr = (String) tableNameList.get(i); + + //取得表中所有列 + Vector columnsInTable = TableColumn.GetTableInfo(conn, dbName, tableNameCurr, "%", "mysql"); + if (columnsInTable == null || columnsInTable.size() == 0) { + System.out.println(tableNameCurr + " : 生成失败,得不到表中列明"); + continue; + } + TableColumn pkcolum = TableColumn.getPKColum(columnsInTable); + if (pkcolum == null) { + System.out.println(tableNameCurr + " : 生成失败,未设置主键"); + continue; + } + + ApiModel apiModel = new ApiModel(dbName, tableNameCurr, columnsInTable, "1.0.0", basePackage); generateVo(srcPath, apiModel); } System.out.println("处理完成"); } - + + private static List getListTableName(String tableNameStr, String dbName, Connection conn) throws Exception{ + List tableNameList = new ArrayList(); + if ("ALL".equalsIgnoreCase(tableNameStr) ) { + String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '"+dbName+"'"; + ResultSet rs = Tools.executeQuery(Tools.createStmt(conn), sql); + if(rs == null){ + throw new Exception("查询数据表名称失败"); + } + try { + while (rs.next()) { + tableNameList.add(rs.getString("Table_name")); + } + } catch (SQLException e) { + e.printStackTrace(); + } + Tools.close(rs); + } else { + String[] TableNameArr = tableNameStr.split(","); + for (int i = 0; i < TableNameArr.length; i++) + tableNameList.add(TableNameArr[i]); + } + return tableNameList; + } + private static String renderByTemplate(String templateName, ApiModel apiModel) throws Exception{ Configuration cfg = new Configuration(); //String comPath = GenerateCode.class.getResource("/").getPath(); -- libgit2 0.21.2