Commit 528d2a9bca4b1aec64010b2d0b461880a3ea526d
1 parent
6c5c32c8
完成 do 模板的生成
Showing
5 changed files
with
32 additions
and
38 deletions
src/main/java/cn/iocoder/dashboard/common/enums/OldCommonStatusEnum.java deleted
| 1 | -package cn.iocoder.dashboard.common.enums; | |
| 2 | - | |
| 3 | -import lombok.AllArgsConstructor; | |
| 4 | -import lombok.Getter; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * 通用状态枚举 | |
| 8 | - * | |
| 9 | - * @author 芋道源码 | |
| 10 | - */ | |
| 11 | -@Getter | |
| 12 | -@AllArgsConstructor | |
| 13 | -public enum OldCommonStatusEnum { | |
| 14 | - | |
| 15 | - ENABLE("0", "开启"), | |
| 16 | - DISABLE("1", "关闭"); | |
| 17 | - | |
| 18 | - /** | |
| 19 | - * 状态值 | |
| 20 | - */ | |
| 21 | - private final String status; | |
| 22 | - /** | |
| 23 | - * 状态名 | |
| 24 | - */ | |
| 25 | - private final String name; | |
| 26 | - | |
| 27 | -} |
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenBuilder.java
| ... | ... | @@ -51,6 +51,10 @@ public class ToolCodegenBuilder { |
| 51 | 51 | .build(); |
| 52 | 52 | |
| 53 | 53 | /** |
| 54 | + * {@link BaseDO} 的字段 | |
| 55 | + */ | |
| 56 | + public static final Set<String> BASE_DO_FIELDS = new HashSet<>(); | |
| 57 | + /** | |
| 54 | 58 | * 新增操作,不需要传递的字段 |
| 55 | 59 | */ |
| 56 | 60 | private static final Set<String> CREATE_OPERATION_EXCLUDE_COLUMN = Sets.newHashSet("id"); |
| ... | ... | @@ -82,14 +86,13 @@ public class ToolCodegenBuilder { |
| 82 | 86 | .build(); |
| 83 | 87 | |
| 84 | 88 | static { |
| 89 | + Arrays.stream(BaseDO.class.getDeclaredFields()).forEach(field -> BASE_DO_FIELDS.add(field.getName())); | |
| 85 | 90 | // 处理 OPERATION 相关的字段 |
| 86 | - Arrays.stream(BaseDO.class.getDeclaredFields()).forEach(field -> { | |
| 87 | - CREATE_OPERATION_EXCLUDE_COLUMN.add(field.getName()); | |
| 88 | - UPDATE_OPERATION_EXCLUDE_COLUMN.add(field.getName()); | |
| 89 | - LIST_OPERATION_EXCLUDE_COLUMN.add(field.getName()); | |
| 90 | - LIST_OPERATION_RESULT_EXCLUDE_COLUMN.add(field.getName()); | |
| 91 | - }); | |
| 91 | + CREATE_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | |
| 92 | + UPDATE_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | |
| 93 | + LIST_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | |
| 92 | 94 | LIST_OPERATION_EXCLUDE_COLUMN.remove("create_time"); // 创建时间,还是可能需要传递的 |
| 95 | + LIST_OPERATION_RESULT_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | |
| 93 | 96 | LIST_OPERATION_RESULT_EXCLUDE_COLUMN.remove("create_time"); // 创建时间,还是需要返回的 |
| 94 | 97 | } |
| 95 | 98 | ... | ... |
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java
| ... | ... | @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.tool.service.codegen.impl; |
| 3 | 3 | import cn.hutool.extra.template.TemplateConfig; |
| 4 | 4 | import cn.hutool.extra.template.TemplateEngine; |
| 5 | 5 | import cn.hutool.extra.template.TemplateUtil; |
| 6 | +import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | |
| 6 | 7 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO; |
| 7 | 8 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO; |
| 8 | 9 | import org.springframework.stereotype.Component; |
| ... | ... | @@ -37,6 +38,10 @@ public class ToolCodegenEngine { |
| 37 | 38 | Map<String, Object> bindingMap = new HashMap<>(); |
| 38 | 39 | bindingMap.put("table", table); |
| 39 | 40 | bindingMap.put("columns", columns); |
| 41 | + bindingMap.put("basePackage", "cn.iocoder.dashboard.modules"); // TODO 基础包 | |
| 42 | + // DO 类,独有字段 | |
| 43 | + bindingMap.put("baseDOFields", ToolCodegenBuilder.BASE_DO_FIELDS); | |
| 44 | + bindingMap.put("baseDOClassName", BaseDO.class.getName()); | |
| 40 | 45 | String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); |
| 41 | 46 | System.out.println(result); |
| 42 | 47 | } | ... | ... |
src/main/resources/application.yaml
| ... | ... | @@ -39,6 +39,9 @@ spring: |
| 39 | 39 | write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳 |
| 40 | 40 | fail-on-empty-beans: false # 允许序列化无属性的 Bean |
| 41 | 41 | |
| 42 | + main: | |
| 43 | + lazy-initialization: true # TODO 芋艿:本地开发环境,可以配置下 lazy 延迟加载 | |
| 44 | + | |
| 42 | 45 | # 芋道配置项,设置当前项目所有自定义的配置 |
| 43 | 46 | yudao: |
| 44 | 47 | version: 1.0.0 |
| ... | ... | @@ -79,7 +82,7 @@ apollo: |
| 79 | 82 | mybatis-plus: |
| 80 | 83 | configuration: |
| 81 | 84 | map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 |
| 82 | - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志 | |
| 85 | +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志 | |
| 83 | 86 | global-config: |
| 84 | 87 | db-config: |
| 85 | 88 | id-type: auto # 自增 ID | ... | ... |
src/main/resources/codegen/dal/do.vm
| 1 | +package ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}; | |
| 2 | + | |
| 1 | 3 | import com.baomidou.mybatisplus.annotation.*; |
| 4 | +import ${baseDOClassName}; | |
| 2 | 5 | import lombok.*; |
| 3 | 6 | import java.util.*; |
| 4 | 7 | |
| 5 | 8 | /** |
| 6 | -* ${table.description} | |
| 9 | +* ${table.classComment} DO | |
| 10 | +* | |
| 11 | +* @author ${table.author} | |
| 7 | 12 | */ |
| 8 | 13 | @TableName("${table.tableName}") |
| 9 | 14 | @Data |
| ... | ... | @@ -12,19 +17,24 @@ import java.util.*; |
| 12 | 17 | @Builder |
| 13 | 18 | @NoArgsConstructor |
| 14 | 19 | @AllArgsConstructor |
| 15 | -public class ${table.tableName}DO extends BaseDO { | |
| 20 | +public class ${table.className}DO extends BaseDO { | |
| 16 | 21 | |
| 17 | 22 | #foreach ($column in $columns) |
| 23 | +#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 | |
| 18 | 24 | /** |
| 19 | 25 | * ${column.columnComment} |
| 20 | 26 | */ |
| 21 | -#if(${column.primaryKey} && ${column.javaType} != 'String') | |
| 27 | +#if ($column.dictType != "")##处理枚举值 | |
| 28 | + // TODO 枚举 ${column.dictType} | |
| 29 | +#end | |
| 30 | +#if (${column.primaryKey} && ${column.javaType} != 'String')##处理主键 + 非 String 的情况 | |
| 22 | 31 | @TableId |
| 23 | 32 | #end |
| 24 | -#if(${column.primaryKey} && ${column.javaType} == 'String') | |
| 33 | +#if (${column.primaryKey} && ${column.javaType} == 'String')##处理主键 + String 的情况 | |
| 25 | 34 | @TableId(type = IdType.INPUT) |
| 26 | 35 | #end |
| 27 | 36 | private ${column.javaType} ${column.javaField}; |
| 28 | 37 | #end |
| 38 | +#end | |
| 29 | 39 | |
| 30 | 40 | } | ... | ... |