Commit 528d2a9bca4b1aec64010b2d0b461880a3ea526d

Authored by YunaiV
1 parent 6c5c32c8

完成 do 模板的生成

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 }
... ...