Commit ea631ee42b7a6aa7249ed760aa67e14eaa0dffa1
1 parent
305090b7
1. 调整代码生成器模板的目录
2. 调整代码的方法
Showing
14 changed files
with
50 additions
and
18 deletions
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java
| 1 | package cn.iocoder.dashboard.modules.tool.service.codegen.impl; | 1 | package cn.iocoder.dashboard.modules.tool.service.codegen.impl; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.map.MapUtil; | ||
| 4 | +import cn.hutool.core.util.StrUtil; | ||
| 3 | import cn.hutool.extra.template.TemplateConfig; | 5 | import cn.hutool.extra.template.TemplateConfig; |
| 4 | import cn.hutool.extra.template.TemplateEngine; | 6 | import cn.hutool.extra.template.TemplateEngine; |
| 5 | import cn.hutool.extra.template.TemplateUtil; | 7 | import cn.hutool.extra.template.TemplateUtil; |
| @@ -14,6 +16,7 @@ import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColum | @@ -14,6 +16,7 @@ import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColum | ||
| 14 | import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; | 16 | import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; |
| 15 | import cn.iocoder.dashboard.util.collection.CollectionUtils; | 17 | import cn.iocoder.dashboard.util.collection.CollectionUtils; |
| 16 | import cn.iocoder.dashboard.util.date.DateUtils; | 18 | import cn.iocoder.dashboard.util.date.DateUtils; |
| 19 | +import com.google.common.collect.Maps; | ||
| 17 | import org.springframework.stereotype.Component; | 20 | import org.springframework.stereotype.Component; |
| 18 | 21 | ||
| 19 | import javax.annotation.Resource; | 22 | import javax.annotation.Resource; |
| @@ -34,6 +37,29 @@ import static cn.hutool.core.text.CharSequenceUtil.*; | @@ -34,6 +37,29 @@ import static cn.hutool.core.text.CharSequenceUtil.*; | ||
| 34 | @Component | 37 | @Component |
| 35 | public class ToolCodegenEngine { | 38 | public class ToolCodegenEngine { |
| 36 | 39 | ||
| 40 | + /** | ||
| 41 | + * 模板配置 | ||
| 42 | + * key:模板在 resources 的地址 | ||
| 43 | + * value:生成的路径 | ||
| 44 | + */ | ||
| 45 | + private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder() | ||
| 46 | + // Java | ||
| 47 | + .put("codegen/java/controller/controller.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/${table.className}Controller.java") | ||
| 48 | + .put("codegen/java/controller/vo/baseVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}BaseVO.java") | ||
| 49 | + .put("codegen/java/controller/vo/createReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}CreateReqVO.java") | ||
| 50 | + .put("codegen/java/controller/vo/pageReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}PageReqVO.java") | ||
| 51 | + .put("codegen/java/controller/vo/respVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}RespVO.java") | ||
| 52 | + .put("codegen/java/controller/vo/updateReqVO.vm", "java/${basePackage}/${table.moduleName}/controller/${table.businessName}/vo/${table.className}UpdateReqVO.java") | ||
| 53 | + .put("codegen/java/convert/convert.vm", "java/${basePackage}/${table.moduleName}/convert/${table.businessName}/${table.className}Convert.java") | ||
| 54 | + .put("codegen/java/dal/do.vm", "java/${basePackage}/${table.moduleName}/dal/dataobject/${table.businessName}/${table.className}DO.java") | ||
| 55 | + .put("codegen/java/dal/mapper.vm", "java/${basePackage}/${table.moduleName}/dal/mysql/${table.businessName}/${table.className}Mapper.java") | ||
| 56 | + .put("codegen/java/enums/errorcode.vm", "java/${basePackage}.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.java") | ||
| 57 | + .put("codegen/java/service/service.vm", "java/${basePackage}/${table.moduleName}/service/${table.businessName}/${table.className}Service.java") | ||
| 58 | + .put("codegen/java/service/serviceImpl.vm", "java/${basePackage}/${table.moduleName}/service/${table.businessName}/impl/${table.className}ServiceImpl.java") | ||
| 59 | + // Vue | ||
| 60 | + // SQL | ||
| 61 | + .build(); | ||
| 62 | + | ||
| 37 | @Resource | 63 | @Resource |
| 38 | private ToolCodegenBuilder codegenBuilder; | 64 | private ToolCodegenBuilder codegenBuilder; |
| 39 | 65 | ||
| @@ -72,7 +98,7 @@ public class ToolCodegenEngine { | @@ -72,7 +98,7 @@ public class ToolCodegenEngine { | ||
| 72 | globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName()); | 98 | globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName()); |
| 73 | } | 99 | } |
| 74 | 100 | ||
| 75 | - public void execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) { | 101 | + public Map<String, String> execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) { |
| 76 | // 创建 bindingMap | 102 | // 创建 bindingMap |
| 77 | Map<String, Object> bindingMap = new HashMap<>(globalBindingMap); | 103 | Map<String, Object> bindingMap = new HashMap<>(globalBindingMap); |
| 78 | bindingMap.put("table", table); | 104 | bindingMap.put("table", table); |
| @@ -81,6 +107,7 @@ public class ToolCodegenEngine { | @@ -81,6 +107,7 @@ public class ToolCodegenEngine { | ||
| 81 | // moduleName 相关 | 107 | // moduleName 相关 |
| 82 | String simpleModuleName = codegenBuilder.getSimpleModuleName(table.getModuleName()); | 108 | String simpleModuleName = codegenBuilder.getSimpleModuleName(table.getModuleName()); |
| 83 | bindingMap.put("simpleModuleName", simpleModuleName); // 将 system 转成 sys | 109 | bindingMap.put("simpleModuleName", simpleModuleName); // 将 system 转成 sys |
| 110 | + bindingMap.put("simpleModuleName_upperFirst", upperFirst(simpleModuleName)); // 将 sys 转成 Sys | ||
| 84 | // className 相关 | 111 | // className 相关 |
| 85 | String simpleClassName = subAfter(table.getClassName(), upperFirst(simpleModuleName) | 112 | String simpleClassName = subAfter(table.getClassName(), upperFirst(simpleModuleName) |
| 86 | , false); // 将 TestDictType 转换成 DictType. 因为在 create 等方法后,不需要带上 Test 前缀 | 113 | , false); // 将 TestDictType 转换成 DictType. 因为在 create 等方法后,不需要带上 Test 前缀 |
| @@ -88,20 +115,25 @@ public class ToolCodegenEngine { | @@ -88,20 +115,25 @@ public class ToolCodegenEngine { | ||
| 88 | bindingMap.put("simpleClassName_underlineCase", toUnderlineCase(simpleClassName)); // 将 DictType 转换成 dict_type | 115 | bindingMap.put("simpleClassName_underlineCase", toUnderlineCase(simpleClassName)); // 将 DictType 转换成 dict_type |
| 89 | bindingMap.put("classNameVar", lowerFirst(simpleClassName)); // 将 DictType 转换成 dictType,用于变量 | 116 | bindingMap.put("classNameVar", lowerFirst(simpleClassName)); // 将 DictType 转换成 dictType,用于变量 |
| 90 | bindingMap.put("simpleClassName_strikeCase", toSymbolCase(simpleClassName, '-')); // 将 DictType 转换成 dict-type | 117 | bindingMap.put("simpleClassName_strikeCase", toSymbolCase(simpleClassName, '-')); // 将 DictType 转换成 dict-type |
| 118 | + | ||
| 91 | // 执行生成 | 119 | // 执行生成 |
| 92 | -// String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); | ||
| 93 | -// String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap); | ||
| 94 | -// String result = templateEngine.getTemplate("codegen/controller/vo/pageReqVO.vm").render(bindingMap); | ||
| 95 | -// String result = templateEngine.getTemplate("codegen/controller/vo/baseVO.vm").render(bindingMap); | ||
| 96 | -// String result = templateEngine.getTemplate("codegen/controller/vo/createReqVO.vm").render(bindingMap); | ||
| 97 | -// String result = templateEngine.getTemplate("codegen/controller/vo/updateReqVO.vm").render(bindingMap); | ||
| 98 | - String result = templateEngine.getTemplate("codegen/controller/vo/respVO.vm").render(bindingMap); | ||
| 99 | -// String result = templateEngine.getTemplate("codegen/convert/convert.vm").render(bindingMap); | ||
| 100 | -// String result = templateEngine.getTemplate("codegen/enums/errorcode.vm").render(bindingMap); | ||
| 101 | -// String result = templateEngine.getTemplate("codegen/service/service.vm").render(bindingMap); | ||
| 102 | -// String result = templateEngine.getTemplate("codegen/service/serviceImpl.vm").render(bindingMap); | ||
| 103 | -// String result = templateEngine.getTemplate("codegen/controller/controller.vm").render(bindingMap); | ||
| 104 | - System.out.println(result); | 120 | + final Map<String, String> result = Maps.newHashMapWithExpectedSize(TEMPLATES.size()); |
| 121 | + TEMPLATES.forEach((vmPath, filePath) -> { | ||
| 122 | + filePath = formatFilePath(filePath, bindingMap); | ||
| 123 | + String content = templateEngine.getTemplate(vmPath).render(bindingMap); | ||
| 124 | + result.put(filePath, content); | ||
| 125 | + }); | ||
| 126 | + return result; | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + private String formatFilePath(String filePath, Map<String, Object> bindingMap) { | ||
| 130 | + filePath = StrUtil.replace(filePath, "${basePackage}", ((String) bindingMap.get("basePackage")).replaceAll("\\.", "/")); | ||
| 131 | + ToolCodegenTableDO table = (ToolCodegenTableDO) bindingMap.get("table"); | ||
| 132 | + filePath = StrUtil.replace(filePath, "${simpleModuleName_upperFirst}", (String) bindingMap.get("simpleModuleName_upperFirst")); | ||
| 133 | + filePath = StrUtil.replace(filePath, "${table.moduleName}", table.getModuleName()); | ||
| 134 | + filePath = StrUtil.replace(filePath, "${table.businessName}", table.getBusinessName()); | ||
| 135 | + filePath = StrUtil.replace(filePath, "${table.className}", table.getClassName()); | ||
| 136 | + return filePath; | ||
| 105 | } | 137 | } |
| 106 | 138 | ||
| 107 | } | 139 | } |
src/main/resources/codegen/controller/controller.vm renamed to src/main/resources/codegen/java/controller/controller.vm
src/main/resources/codegen/controller/vo/_column.vm renamed to src/main/resources/codegen/java/controller/vo/_column.vm
src/main/resources/codegen/controller/vo/baseVO.vm renamed to src/main/resources/codegen/java/controller/vo/baseVO.vm
| @@ -14,7 +14,7 @@ public class ${table.className}BaseVO { | @@ -14,7 +14,7 @@ public class ${table.className}BaseVO { | ||
| 14 | 14 | ||
| 15 | #foreach ($column in $columns) | 15 | #foreach ($column in $columns) |
| 16 | #if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult})##通用操作 | 16 | #if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult})##通用操作 |
| 17 | - #parse("codegen/controller/vo/_column.vm") | 17 | + #parse("codegen/java/controller/vo/_column.vm") |
| 18 | 18 | ||
| 19 | #end | 19 | #end |
| 20 | #end | 20 | #end |
src/main/resources/codegen/controller/vo/createReqVO.vm renamed to src/main/resources/codegen/java/controller/vo/createReqVO.vm
| @@ -23,7 +23,7 @@ public class ${table.className}CreateReqVO extends ${table.className}BaseVO { | @@ -23,7 +23,7 @@ public class ${table.className}CreateReqVO extends ${table.className}BaseVO { | ||
| 23 | 23 | ||
| 24 | #foreach ($column in $columns) | 24 | #foreach ($column in $columns) |
| 25 | #if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 | 25 | #if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 |
| 26 | - #parse("codegen/controller/vo/_column.vm") | 26 | + #parse("codegen/java/controller/vo/_column.vm") |
| 27 | 27 | ||
| 28 | #end | 28 | #end |
| 29 | #end | 29 | #end |
src/main/resources/codegen/controller/vo/pageReqVO.vm renamed to src/main/resources/codegen/java/controller/vo/pageReqVO.vm
src/main/resources/codegen/controller/vo/respVO.vm renamed to src/main/resources/codegen/java/controller/vo/respVO.vm
src/main/resources/codegen/controller/vo/updateReqVO.vm renamed to src/main/resources/codegen/java/controller/vo/updateReqVO.vm
| @@ -23,7 +23,7 @@ public class ${table.className}UpdateReqVO extends ${table.className}BaseVO { | @@ -23,7 +23,7 @@ public class ${table.className}UpdateReqVO extends ${table.className}BaseVO { | ||
| 23 | 23 | ||
| 24 | #foreach ($column in $columns) | 24 | #foreach ($column in $columns) |
| 25 | #if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 | 25 | #if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 |
| 26 | - #parse("codegen/controller/vo/_column.vm") | 26 | + #parse("codegen/java/controller/vo/_column.vm") |
| 27 | 27 | ||
| 28 | #end | 28 | #end |
| 29 | #end | 29 | #end |
src/main/resources/codegen/convert/convert.vm renamed to src/main/resources/codegen/java/convert/convert.vm
src/main/resources/codegen/dal/do.vm renamed to src/main/resources/codegen/java/dal/do.vm
src/main/resources/codegen/dal/mapper.vm renamed to src/main/resources/codegen/java/dal/mapper.vm
src/main/resources/codegen/enums/errorcode.vm renamed to src/main/resources/codegen/java/enums/errorcode.vm
src/main/resources/codegen/service/service.vm renamed to src/main/resources/codegen/java/service/service.vm
src/main/resources/codegen/service/serviceImpl.vm renamed to src/main/resources/codegen/java/service/serviceImpl.vm
| @@ -16,7 +16,7 @@ import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table. | @@ -16,7 +16,7 @@ import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table. | ||
| 16 | 16 | ||
| 17 | import ${ServiceExceptionUtilClassName}; | 17 | import ${ServiceExceptionUtilClassName}; |
| 18 | 18 | ||
| 19 | -import static ${basePackage}.${table.moduleName}.enums.${simpleModuleName.substring(0,1).toUpperCase()}${simpleModuleName.substring(1)}ErrorCodeConstants.*; | 19 | +import static ${basePackage}.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*; |
| 20 | 20 | ||
| 21 | /** | 21 | /** |
| 22 | * ${table.classComment} Service 实现类 | 22 | * ${table.classComment} Service 实现类 |