From 1161fb6b74bc08f8792aa66a54394e031fae18b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Tue, 15 Oct 2024 08:03:09 +0800 Subject: [PATCH] 'commit' --- ...ler.txt => t_wx_fault_type_Controller.txt} | 0 .../dsideal/Code/t_wx_fault_type_Model.txt | 9 + .../java/com/dsideal/Tools/GenerateCode.java | 220 +++----- .../Tools/GenerateCodeWithFreeMaker.java | 476 ------------------ dsUtils/src/main/resources/Model.ftl | 20 +- dsUtils/target/classes/Model.ftl | 20 +- 6 files changed, 98 insertions(+), 647 deletions(-) rename dsUtils/src/main/java/com/dsideal/Code/{t_wx_fault_typeController.txt => t_wx_fault_type_Controller.txt} (100%) create mode 100644 dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_type_Model.txt delete mode 100644 dsUtils/src/main/java/com/dsideal/Tools/GenerateCodeWithFreeMaker.java diff --git a/dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_typeController.txt b/dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_type_Controller.txt similarity index 100% rename from dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_typeController.txt rename to dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_type_Controller.txt diff --git a/dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_type_Model.txt b/dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_type_Model.txt new file mode 100644 index 00000000..b099677f --- /dev/null +++ b/dsUtils/src/main/java/com/dsideal/Code/t_wx_fault_type_Model.txt @@ -0,0 +1,9 @@ +/**增加维修故障类型字典 +* @param type_name 类型名称 +*/ +public void addWxFaultType(String type_name ){ + Record record = new Record(); + record.set("type_name", type_name); + Db.save("t_wx_fault_type","type_id",record); +} + diff --git a/dsUtils/src/main/java/com/dsideal/Tools/GenerateCode.java b/dsUtils/src/main/java/com/dsideal/Tools/GenerateCode.java index 90618118..48315dd8 100644 --- a/dsUtils/src/main/java/com/dsideal/Tools/GenerateCode.java +++ b/dsUtils/src/main/java/com/dsideal/Tools/GenerateCode.java @@ -9,9 +9,22 @@ import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.hikaricp.HikariCpPlugin; import javax.sql.DataSource; -import java.sql.*; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; import java.util.*; +import com.jfinal.plugin.activerecord.Record; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; +import freemarker.template.Version; + public class GenerateCode { // JavaBean保存的位置 @@ -170,7 +183,7 @@ public class GenerateCode { dsKit.print("表" + table + "没有主键,请检查!"); } //生成代码 - autoCode(jo); + autoCodeFreeMaker(jo); } if (StrKit.isBlank(tableNames)) { dsKit.print("没有找到表,请检查!"); @@ -187,12 +200,7 @@ public class GenerateCode { System.out.println(dsKit.getCurrentTimeStr() + " 恭喜,表" + tableNames + "代码已成功生成!"); } - /** - * 功能:生成代码 - * - * @param jo - */ - public static void autoCode(JSONObject jo) { + public static void autoCodeFreeMaker(JSONObject jo) throws IOException, TemplateException { //不带主键的其它字段,拼接成java的函数声明内容 // 迭代map将按照插入顺序 Map fields = (Map) jo.get("fields"); @@ -222,169 +230,59 @@ public class GenerateCode { } //表的描述 String comment = jo.getStr("comment"); - //主键 String key = jo.getStr("key"); String key_type = jo.getStr("key_type"); //表名 String table = jo.getStr("table"); - StringBuilder sb = new StringBuilder(); - //sb.append("//-------------------下面是Controller部分-------------------\n"); - sb.append("/* 下面代码开始维护" + comment + " */\n"); - sb.append("\n"); - //1、增加 - sb.append(" /**增加" + comment + "\n"); - sb.append(" *\n"); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); - } - } - sb.append(" */\n"); - sb.append(" @Before({POST.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" public void add" + beanNameWithoutT + "(" + fullParameters + "){\n"); - sb.append(" " + PropKit.get("daoName") + ".add" + beanNameWithoutT + "(" + parameters + ");\n"); - sb.append(" renderJson(RetKit.renderSuccess());\n"); - sb.append(" }\n"); - - //2、删除 - sb.append("\n"); - sb.append(" //按ID删除" + comment + "\n"); - sb.append(" @Before({POST.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" @IsNumericInterface({\""+key+"\"})\n"); - sb.append(" public void del" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" " + PropKit.get("daoName") + ".del" + beanNameWithoutT + "ById(" + key + ");\n"); - sb.append(" renderJson(RetKit.renderSuccess());\n"); - sb.append(" }\n"); - - //3、修改 - sb.append("\n"); - sb.append(" /**按ID修改" + comment + "\n"); - sb.append(" *\n"); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); - } - } - sb.append(" */\n"); - sb.append(" @Before({POST.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" //@IsNumericInterface({\""+key+"\"})\n"); - sb.append(" public void update" + beanNameWithoutT + "ById(" + key_type + " " + key + "," + fullParameters + "){\n"); - sb.append(" " + PropKit.get("daoName") + ".update" + beanNameWithoutT + "ById(" + key + "," + parameters + ");\n"); - sb.append(" renderJson(RetKit.renderSuccess());\n"); - sb.append(" }\n"); - sb.append("\n"); - - //4、单条查询 - sb.append(" //按ID查询" + comment + "\n"); - sb.append(" @Before({GET.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" @IsNumericInterface({\""+key+"\"})\n"); - sb.append(" public void get" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" renderJson(RetKit.renderSuccess(" + PropKit.get("daoName") + ".get" + beanNameWithoutT + "ById(" + key + ")));\n"); - sb.append(" }\n"); - sb.append("\n"); - - //5、分页查询 - sb.append(" //分页查询" + comment + "\n"); - sb.append(" @Before({GET.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" public void get" + beanNameWithoutT + "List(int pageNum, int pageSize){\n"); - sb.append(" Page listPage = " + PropKit.get("daoName") + ".get" + beanNameWithoutT + "List(pageNum, pageSize);\n"); - sb.append(" renderJson(RetKit.renderSuccess(listPage));\n"); - sb.append(" }\n"); - sb.append("\n"); - - FileUtil.writeUtf8String(sb.toString(), beanPath + "/" + beanNameWithoutT + "Controller.txt"); - - - sb.append("/* 下面代码开始维护" + comment + " */\n"); - sb.append("\n"); - sb = new StringBuilder(); - //1、增加 - sb.append(" /**增加" + comment + "\n"); - sb.append(" *\n"); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); - } - } - sb.append(" */\n"); - sb.append(" public void add" + beanNameWithoutT + "(" + fullParameters + "){\n"); - sb.append(" Record record = new Record();\n"); - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" record.set(\"" + entry.getKey() + "\"," + entry.getKey() + ");\n"); - } else { - sb.append(" record.set(\"" + entry.getKey() + "\", DateTime.now());\n"); - } - } - sb.append(" Db.save(\"" + table + "\",\"" + key + "\",record);\n"); - sb.append("}\n"); - //2、删除 - sb.append("\n"); - sb.append(" //删除" + comment + "\n"); - sb.append(" public void del" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" String sql=\"delete from " + table + " where " + key + "=?\";\n"); - sb.append(" Db.update(sql," + key + ");\n"); - sb.append(" }\n"); - sb.append("\n"); - - //3、修改 - sb.append(" /**修改" + comment + "\n"); - sb.append(" *\n"); + Map dataModel = new HashMap<>(); + dataModel.put("comment", comment); + List params = new ArrayList<>(); //迭代 for (Map.Entry entry : fields.entrySet()) { if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); + Record record = new Record(); + record.set("key", entry.getKey()); + record.set("comment", fieldsComment.get(entry.getKey())); + params.add(record); } } - sb.append(" */\n"); - - sb.append(" public void update" + beanNameWithoutT + "ById(" + key_type + " " + key + "," + fullParameters + "){\n"); - sb.append(" String sql=\"update " + table + " set "); - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(entry.getKey() + "= ?,"); - } else { - sb.append(entry.getKey() + "= DateTime.now(),"); - } - } - sb = sb.deleteCharAt(sb.length() - 1); - sb.append(" where " + key + "=?\";\n"); - sb.append(" Db.update(sql,"); - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(entry.getKey() + " , "); - } - } - sb.append(key); - sb.append(");\n"); - sb.append(" }\n"); - //4、单条查询 - sb.append("\n"); - sb.append(" //单条查询" + comment + "\n"); - sb.append(" public Record get" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" String sql=\"select * from " + table + " where " + key + "=?\";\n"); - sb.append(" return Db.findFirst(sql," + key + ");\n"); - sb.append(" }\n"); - sb.append("\n"); - - //5、分页查询 - sb.append(" //分页查询" + comment + "\n"); - sb.append(" public Page get" + beanNameWithoutT + "List(int pageNum, int pageSize){\n"); - sb.append(" String sql1=\"select * \";\n"); - sb.append(" String sql2=\" from " + table + " \";\n"); - sb.append(" return Db.paginate(pageNum, pageSize, sql1,sql2);\n"); - sb.append(" }\n"); - sb.append("\n"); - FileUtil.writeUtf8String(sb.toString(), beanPath + "/" + beanNameWithoutT + "Model.txt"); + dataModel.put("params", params); + dataModel.put("daoName", PropKit.get("daoName")); + dataModel.put("beanNameWithoutT", beanNameWithoutT); + dataModel.put("fullParameters", fullParameters); + dataModel.put("parameters", parameters); + dataModel.put("key", key); + dataModel.put("key_type", key_type); + dataModel.put("table", table); + dataModel.put("fields", fields.entrySet()); + + //调用FreeMarker模板引擎 + Configuration cfg = new Configuration(new Version(2, 3, 33));// 创建一个 Configuration 实例 + // 设置模板目录 + String path = System.getProperty("user.dir") + "/dsUtils/src/main/resources"; + String codePath = System.getProperty("user.dir") + "/dsUtils/src/main/java/com/dsideal/Code"; + cfg.setDirectoryForTemplateLoading(new File(path)); + // 设置字符编码 + cfg.setDefaultEncoding("UTF-8"); + + //1、生成Controller层代码 + // 加载模板 + Template template = cfg.getTemplate("Controller.ftl"); + // 渲染模板到文件 + Writer out = new FileWriter(codePath +"/"+ table + "_Controller.txt", StandardCharsets.UTF_8); + template.process(dataModel, out); + out.close(); + System.out.println("生成Controller层代码完成。"); + + //2、生成Model层代码 + // 加载模板 + template = cfg.getTemplate("Model.ftl"); + // 渲染模板到文件 + out = new FileWriter(codePath +"/"+ table + "_Model.txt", StandardCharsets.UTF_8); + template.process(dataModel, out); + out.close(); + System.out.println("生成Model层代码完成。"); } } diff --git a/dsUtils/src/main/java/com/dsideal/Tools/GenerateCodeWithFreeMaker.java b/dsUtils/src/main/java/com/dsideal/Tools/GenerateCodeWithFreeMaker.java deleted file mode 100644 index 38f81bc5..00000000 --- a/dsUtils/src/main/java/com/dsideal/Tools/GenerateCodeWithFreeMaker.java +++ /dev/null @@ -1,476 +0,0 @@ -package com.dsideal.Tools; - -import cn.hutool.core.io.FileUtil; -import cn.hutool.json.JSONObject; -import com.dsideal.Utils.dsKit; -import com.jfinal.kit.PropKit; -import com.jfinal.kit.StrKit; -import com.jfinal.plugin.activerecord.ActiveRecordPlugin; -import com.jfinal.plugin.hikaricp.HikariCpPlugin; - -import javax.sql.DataSource; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.*; - -import com.jfinal.plugin.activerecord.Record; -import freemarker.template.Configuration; -import freemarker.template.Template; -import freemarker.template.TemplateException; -import freemarker.template.Version; - -public class GenerateCodeWithFreeMaker { - - // JavaBean保存的位置 - public static String beanPath; - - // mysql与java的数据类型映射 - public static Map dataTypeMap = new HashMap<>(); - - /** - * 获取当前数据库下的表 - * - * @return List - * @throws Exception - */ - public static List getTableNames(Connection conn) throws Exception { - List tables = new ArrayList<>(); - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("show tables"); - while (rs.next()) { - String tableName = rs.getString(1); - if (tableName.equals(PropKit.get("tableName"))) { - tables.add(tableName); - } - } - rs.close(); - stmt.close(); - return tables; - } - - - /** - * 获得某表的注释信息+列信息 - * - * @param table - * @return - * @throws Exception - */ - public static JSONObject getStructure(Connection conn, String table) throws Exception { - //表结构的描述JSON对象 - JSONObject jo = new JSONObject(); - //字段,不包含主键 - Map dataTypeMap = new LinkedHashMap<>(); - //字段描述 - Map commentMap = new LinkedHashMap<>(); - - //表注释 - String comment = ""; - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("show create table " + table); - if (rs != null && rs.next()) { - String createDDL = rs.getString(2); - int index = createDDL.indexOf("COMMENT='"); - if (index >= 0) { - comment = createDDL.substring(index + 9); - comment = comment.substring(0, comment.length() - 1); - } - } - //类名 - String beanNameWithoutT = dsKit.toCamelCase(dsKit.capitalizeFirstLetter(table)); - - - List fields = new ArrayList<>(); - //字段信息 - rs = stmt.executeQuery("show full columns from " + table); - while (rs.next()) { - String Type = rs.getString("Type"); - String Field = rs.getString("Field"); - String Comment = rs.getString("Comment"); - commentMap.put(Field, Comment); - fields.add(Field); - - if (Type.contains("(")) { - Type = Type.substring(0, Type.indexOf("(")); - } - Type = Type.toUpperCase(); - - //记录主键 - if (rs.getString("Key").equals("PRI")) { - jo.put("key", Field); - jo.put("key_type", GenerateCodeWithFreeMaker.dataTypeMap.get(Type)); - } else {//否则记录到map中 - dataTypeMap.put(Field, GenerateCodeWithFreeMaker.dataTypeMap.get(Type)); - } - } - //关闭连接 - rs.close(); - stmt.close(); - jo.put("fields", dataTypeMap); - jo.put("fieldsComment", commentMap); - jo.put("beanNameWithoutT", beanNameWithoutT); - jo.put("comment", comment); - jo.put("table", table); - return jo; - } - - /** - * 功能:初始化数据库类型映射 - */ - public static void initMap() { - //mysql与java的数据类型映射 - dataTypeMap.put("INT", "int"); - dataTypeMap.put("BIGINT", "long"); - dataTypeMap.put("DOUBLE", "double"); - dataTypeMap.put("FLOAT", "float"); - dataTypeMap.put("TINYINT", "int"); - dataTypeMap.put("DATE", "java.util.Date"); - dataTypeMap.put("TIMESTAMP", "java.util.Date"); - dataTypeMap.put("BIGINT UNSIGNED", "long"); - dataTypeMap.put("INT UNSIGNED", "long"); - dataTypeMap.put("MEDIUMINT", "int"); - dataTypeMap.put("MEDIUMINT UNSIGNED", "long"); - dataTypeMap.put("SMALLINT", "int"); - dataTypeMap.put("SMALLINT UNSIGNED", "long"); - dataTypeMap.put("TINYINT UNSIGNED", "long"); - dataTypeMap.put("LONGTEXT", "String"); - dataTypeMap.put("VARCHAR", "String"); - dataTypeMap.put("CHAR", "String"); - dataTypeMap.put("TEXT", "String"); - dataTypeMap.put("DATETIME", "java.util.Date"); - dataTypeMap.put("DECIMAL", "BigDecimal"); - dataTypeMap.put("BOOLEAN", "boolean"); - } - - public static void main(String[] args) throws Exception { - //加载配置文件 - PropKit.use("application.properties"); - beanPath = PropKit.get("beanPath"); - if (!FileUtil.exist(beanPath)) { - FileUtil.mkdir(beanPath); - } - initMap(); - - // 配置Druid数据源插件 - HikariCpPlugin hpPlugin = new HikariCpPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), - PropKit.get("password").trim(), PropKit.get("driverClassName")); - hpPlugin.start(); - - // 配置ActiveRecord插件 - ActiveRecordPlugin arp = new ActiveRecordPlugin(hpPlugin); - hpPlugin.start(); - arp.start(); - DataSource dataSource = hpPlugin.getDataSource(); - // 数据库连接 - Connection conn = dataSource.getConnection(); - - //开始生成 - List tables = getTableNames(conn); - - String tableNames = ""; - //表描述 - for (String table : tables) { - JSONObject jo = getStructure(conn, table); - tableNames += table + ","; - - if (StrKit.isBlank(jo.getStr("key"))) { - dsKit.print("表" + table + "没有主键,请检查!"); - } - //生成代码 - autoCodeFreeMaker(jo); - } - if (StrKit.isBlank(tableNames)) { - dsKit.print("没有找到表,请检查!"); - return; - } - //去掉最后的逗号 - tableNames = tableNames.substring(0, tableNames.length() - 1); - - //关闭数据库 - conn.close(); - arp.stop(); - hpPlugin.stop(); - - System.out.println(dsKit.getCurrentTimeStr() + " 恭喜,表" + tableNames + "代码已成功生成!"); - } - - /** - * 功能:生成代码 - * - * @param jo - */ - public static void autoCode(JSONObject jo) { - //不带主键的其它字段,拼接成java的函数声明内容 - // 迭代map将按照插入顺序 - Map fields = (Map) jo.get("fields"); - Map fieldsComment = (Map) jo.get("fieldsComment"); - - String fullParameters = "";//带数据类型+字段名称 - String parameters = "";//不带数据类型,只有字段名称 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time") && !entry.getKey().equals("b_use")) { - fullParameters += entry.getValue() + " " + entry.getKey() + " , ";//这里必须是反着来的,否则数据类型会重复 - parameters += entry.getKey() + " , "; - } - } - //移除最后一个逗号 - fullParameters = fullParameters.substring(0, fullParameters.length() - 1); - if (fullParameters.endsWith(",")) {//去掉最后的逗号 - fullParameters = fullParameters.substring(0, fullParameters.length() - 1); - } - parameters = parameters.substring(0, parameters.length() - 1); - if (parameters.endsWith(",")) { - parameters = parameters.substring(0, parameters.length() - 1); - } - //后缀名称 - String beanNameWithoutT = jo.getStr("beanNameWithoutT"); - if (beanNameWithoutT.startsWith("T")) { - beanNameWithoutT = beanNameWithoutT.substring(1); - } - //表的描述 - String comment = jo.getStr("comment"); - //主键 - String key = jo.getStr("key"); - String key_type = jo.getStr("key_type"); - //表名 - String table = jo.getStr("table"); - - StringBuilder sb = new StringBuilder(); - //1、增加 - sb.append(" /**增加" + comment + "\n"); - sb.append(" *\n"); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); - } - } - sb.append(" */\n"); - sb.append(" @Before({POST.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" public void add" + beanNameWithoutT + "(" + fullParameters + "){\n"); - sb.append(" " + PropKit.get("daoName") + ".add" + beanNameWithoutT + "(" + parameters + ");\n"); - sb.append(" renderJson(RetKit.renderSuccess());\n"); - sb.append(" }\n"); - - //2、删除 - sb.append("\n"); - sb.append(" //按ID删除" + comment + "\n"); - sb.append(" @Before({POST.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" @IsNumericInterface({\"" + key + "\"})\n"); - sb.append(" public void del" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" " + PropKit.get("daoName") + ".del" + beanNameWithoutT + "ById(" + key + ");\n"); - sb.append(" renderJson(RetKit.renderSuccess());\n"); - sb.append(" }\n"); - - //3、修改 - sb.append("\n"); - sb.append(" /**按ID修改" + comment + "\n"); - sb.append(" *\n"); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); - } - } - sb.append(" */\n"); - sb.append(" @Before({POST.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" //@IsNumericInterface({\"" + key + "\"})\n"); - sb.append(" public void update" + beanNameWithoutT + "ById(" + key_type + " " + key + "," + fullParameters + "){\n"); - sb.append(" " + PropKit.get("daoName") + ".update" + beanNameWithoutT + "ById(" + key + "," + parameters + ");\n"); - sb.append(" renderJson(RetKit.renderSuccess());\n"); - sb.append(" }\n"); - sb.append("\n"); - - //4、单条查询 - sb.append(" //按ID查询" + comment + "\n"); - sb.append(" @Before({GET.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" @IsNumericInterface({\"" + key + "\"})\n"); - sb.append(" public void get" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" renderJson(RetKit.renderSuccess(" + PropKit.get("daoName") + ".get" + beanNameWithoutT + "ById(" + key + ")));\n"); - sb.append(" }\n"); - sb.append("\n"); - - //5、分页查询 - sb.append(" //分页查询" + comment + "\n"); - sb.append(" @Before({GET.class})\n"); - sb.append(" @JwtCheckInterface({})\n"); - sb.append(" public void get" + beanNameWithoutT + "List(int pageNum, int pageSize){\n"); - sb.append(" Page listPage = " + PropKit.get("daoName") + ".get" + beanNameWithoutT + "List(pageNum, pageSize);\n"); - sb.append(" renderJson(RetKit.renderSuccess(listPage));\n"); - sb.append(" }\n"); - sb.append("\n"); - - FileUtil.writeUtf8String(sb.toString(), beanPath + "/" + beanNameWithoutT + "Controller.txt"); - - - sb.append("/* 下面代码开始维护" + comment + " */\n"); - sb.append("\n"); - sb = new StringBuilder(); - //1、增加 - sb.append(" /**增加" + comment + "\n"); - sb.append(" *\n"); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); - } - } - sb.append(" */\n"); - sb.append(" public void add" + beanNameWithoutT + "(" + fullParameters + "){\n"); - sb.append(" Record record = new Record();\n"); - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" record.set(\"" + entry.getKey() + "\"," + entry.getKey() + ");\n"); - } else { - sb.append(" record.set(\"" + entry.getKey() + "\", DateTime.now());\n"); - } - } - sb.append(" Db.save(\"" + table + "\",\"" + key + "\",record);\n"); - sb.append("}\n"); - //2、删除 - sb.append("\n"); - sb.append(" //删除" + comment + "\n"); - sb.append(" public void del" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" String sql=\"delete from " + table + " where " + key + "=?\";\n"); - sb.append(" Db.update(sql," + key + ");\n"); - sb.append(" }\n"); - sb.append("\n"); - - //3、修改 - sb.append(" /**修改" + comment + "\n"); - sb.append(" *\n"); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(" * @param " + entry.getKey() + " " + fieldsComment.get(entry.getKey()) + "\n"); - } - } - sb.append(" */\n"); - - sb.append(" public void update" + beanNameWithoutT + "ById(" + key_type + " " + key + "," + fullParameters + "){\n"); - sb.append(" String sql=\"update " + table + " set "); - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(entry.getKey() + "= ?,"); - } else { - sb.append(entry.getKey() + "= DateTime.now(),"); - } - } - sb = sb.deleteCharAt(sb.length() - 1); - sb.append(" where " + key + "=?\";\n"); - sb.append(" Db.update(sql,"); - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - sb.append(entry.getKey() + " , "); - } - } - sb.append(key); - sb.append(");\n"); - sb.append(" }\n"); - //4、单条查询 - sb.append("\n"); - sb.append(" //单条查询" + comment + "\n"); - sb.append(" public Record get" + beanNameWithoutT + "ById(" + key_type + " " + key + "){\n"); - sb.append(" String sql=\"select * from " + table + " where " + key + "=?\";\n"); - sb.append(" return Db.findFirst(sql," + key + ");\n"); - sb.append(" }\n"); - sb.append("\n"); - - //5、分页查询 - sb.append(" //分页查询" + comment + "\n"); - sb.append(" public Page get" + beanNameWithoutT + "List(int pageNum, int pageSize){\n"); - sb.append(" String sql1=\"select * \";\n"); - sb.append(" String sql2=\" from " + table + " \";\n"); - sb.append(" return Db.paginate(pageNum, pageSize, sql1,sql2);\n"); - sb.append(" }\n"); - sb.append("\n"); - FileUtil.writeUtf8String(sb.toString(), beanPath + "/" + beanNameWithoutT + "Model.txt"); - } - - - public static void autoCodeFreeMaker(JSONObject jo) throws IOException, TemplateException { - //不带主键的其它字段,拼接成java的函数声明内容 - // 迭代map将按照插入顺序 - Map fields = (Map) jo.get("fields"); - Map fieldsComment = (Map) jo.get("fieldsComment"); - - String fullParameters = "";//带数据类型+字段名称 - String parameters = "";//不带数据类型,只有字段名称 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time") && !entry.getKey().equals("b_use")) { - fullParameters += entry.getValue() + " " + entry.getKey() + " , ";//这里必须是反着来的,否则数据类型会重复 - parameters += entry.getKey() + " , "; - } - } - //移除最后一个逗号 - fullParameters = fullParameters.substring(0, fullParameters.length() - 1); - if (fullParameters.endsWith(",")) {//去掉最后的逗号 - fullParameters = fullParameters.substring(0, fullParameters.length() - 1); - } - parameters = parameters.substring(0, parameters.length() - 1); - if (parameters.endsWith(",")) { - parameters = parameters.substring(0, parameters.length() - 1); - } - //后缀名称 - String beanNameWithoutT = jo.getStr("beanNameWithoutT"); - if (beanNameWithoutT.startsWith("T")) { - beanNameWithoutT = beanNameWithoutT.substring(1); - } - //表的描述 - String comment = jo.getStr("comment"); - //主键 - String key = jo.getStr("key"); - String key_type = jo.getStr("key_type"); - //表名 - String table = jo.getStr("table"); - - Map dataModel = new HashMap<>(); - dataModel.put("comment", comment); - List params = new ArrayList<>(); - //迭代 - for (Map.Entry entry : fields.entrySet()) { - if (!entry.getKey().equals("create_time")) { - Record record = new Record(); - record.set("key", entry.getKey()); - record.set("comment", fieldsComment.get(entry.getKey())); - params.add(record); - } - } - dataModel.put("params", params); - dataModel.put("daoName", PropKit.get("daoName")); - dataModel.put("beanNameWithoutT", beanNameWithoutT); - dataModel.put("fullParameters", fullParameters); - dataModel.put("parameters", parameters); - dataModel.put("key", key); - dataModel.put("key_type", key_type); - - //调用FreeMarker模板引擎 - Configuration cfg = new Configuration(new Version(2, 3, 33));// 创建一个 Configuration 实例 - // 设置模板目录 - String path = System.getProperty("user.dir") + "/dsUtils/src/main/resources"; - String codePath = System.getProperty("user.dir") + "/dsUtils/src/main/java/com/dsideal/Code"; - cfg.setDirectoryForTemplateLoading(new File(path)); - // 设置字符编码 - cfg.setDefaultEncoding("UTF-8"); - - //1、生成Controller层代码 - // 加载模板 - Template template = cfg.getTemplate("Controller.ftl"); - // 渲染模板到文件 - Writer out = new FileWriter(codePath +"/"+ table + "_Controller.txt", StandardCharsets.UTF_8); - template.process(dataModel, out); - out.close(); - System.out.println("生成Controller层代码完成"); - } -} diff --git a/dsUtils/src/main/resources/Model.ftl b/dsUtils/src/main/resources/Model.ftl index 49aa3e03..7cd5865c 100644 --- a/dsUtils/src/main/resources/Model.ftl +++ b/dsUtils/src/main/resources/Model.ftl @@ -1,7 +1,17 @@ -列表
-<#list users as user> -
  • ${user.name} - ${user.age}
  • +/**增加${comment} +<#list params as param> +* @param ${param.key} ${param.comment} +*/ +public void add${beanNameWithoutT}(${fullParameters}){ + Record record = new Record(); +<#list fields as entry> + <#if entry.key == "create_time"> + record.set("create_time", DateTime.now()); + <#else> + record.set("${entry.key}", ${entry.key}); + + + Db.save("${table}","${key}",record); +} -变量
    -${title} \ No newline at end of file diff --git a/dsUtils/target/classes/Model.ftl b/dsUtils/target/classes/Model.ftl index 49aa3e03..7cd5865c 100644 --- a/dsUtils/target/classes/Model.ftl +++ b/dsUtils/target/classes/Model.ftl @@ -1,7 +1,17 @@ -列表
    -<#list users as user> -
  • ${user.name} - ${user.age}
  • +/**增加${comment} +<#list params as param> +* @param ${param.key} ${param.comment} +*/ +public void add${beanNameWithoutT}(${fullParameters}){ + Record record = new Record(); +<#list fields as entry> + <#if entry.key == "create_time"> + record.set("create_time", DateTime.now()); + <#else> + record.set("${entry.key}", ${entry.key}); + + + Db.save("${table}","${key}",record); +} -变量
    -${title} \ No newline at end of file