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,6 +51,10 @@ public class ToolCodegenBuilder {
51 .build(); 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 private static final Set<String> CREATE_OPERATION_EXCLUDE_COLUMN = Sets.newHashSet("id"); 60 private static final Set<String> CREATE_OPERATION_EXCLUDE_COLUMN = Sets.newHashSet("id");
@@ -82,14 +86,13 @@ public class ToolCodegenBuilder { @@ -82,14 +86,13 @@ public class ToolCodegenBuilder {
82 .build(); 86 .build();
83 87
84 static { 88 static {
  89 + Arrays.stream(BaseDO.class.getDeclaredFields()).forEach(field -> BASE_DO_FIELDS.add(field.getName()));
85 // 处理 OPERATION 相关的字段 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 LIST_OPERATION_EXCLUDE_COLUMN.remove("create_time"); // 创建时间,还是可能需要传递的 94 LIST_OPERATION_EXCLUDE_COLUMN.remove("create_time"); // 创建时间,还是可能需要传递的
  95 + LIST_OPERATION_RESULT_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS);
93 LIST_OPERATION_RESULT_EXCLUDE_COLUMN.remove("create_time"); // 创建时间,还是需要返回的 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,6 +3,7 @@ package cn.iocoder.dashboard.modules.tool.service.codegen.impl;
3 import cn.hutool.extra.template.TemplateConfig; 3 import cn.hutool.extra.template.TemplateConfig;
4 import cn.hutool.extra.template.TemplateEngine; 4 import cn.hutool.extra.template.TemplateEngine;
5 import cn.hutool.extra.template.TemplateUtil; 5 import cn.hutool.extra.template.TemplateUtil;
  6 +import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
6 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO; 7 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO;
7 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO; 8 import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
8 import org.springframework.stereotype.Component; 9 import org.springframework.stereotype.Component;
@@ -37,6 +38,10 @@ public class ToolCodegenEngine { @@ -37,6 +38,10 @@ public class ToolCodegenEngine {
37 Map<String, Object> bindingMap = new HashMap<>(); 38 Map<String, Object> bindingMap = new HashMap<>();
38 bindingMap.put("table", table); 39 bindingMap.put("table", table);
39 bindingMap.put("columns", columns); 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 String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); 45 String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap);
41 System.out.println(result); 46 System.out.println(result);
42 } 47 }
src/main/resources/application.yaml
@@ -39,6 +39,9 @@ spring: @@ -39,6 +39,9 @@ spring:
39 write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳 39 write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳
40 fail-on-empty-beans: false # 允许序列化无属性的 Bean 40 fail-on-empty-beans: false # 允许序列化无属性的 Bean
41 41
  42 + main:
  43 + lazy-initialization: true # TODO 芋艿:本地开发环境,可以配置下 lazy 延迟加载
  44 +
42 # 芋道配置项,设置当前项目所有自定义的配置 45 # 芋道配置项,设置当前项目所有自定义的配置
43 yudao: 46 yudao:
44 version: 1.0.0 47 version: 1.0.0
@@ -79,7 +82,7 @@ apollo: @@ -79,7 +82,7 @@ apollo:
79 mybatis-plus: 82 mybatis-plus:
80 configuration: 83 configuration:
81 map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 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 global-config: 86 global-config:
84 db-config: 87 db-config:
85 id-type: auto # 自增 ID 88 id-type: auto # 自增 ID
src/main/resources/codegen/dal/do.vm
  1 +package ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName};
  2 +
1 import com.baomidou.mybatisplus.annotation.*; 3 import com.baomidou.mybatisplus.annotation.*;
  4 +import ${baseDOClassName};
2 import lombok.*; 5 import lombok.*;
3 import java.util.*; 6 import java.util.*;
4 7
5 /** 8 /**
6 -* ${table.description} 9 +* ${table.classComment} DO
  10 +*
  11 +* @author ${table.author}
7 */ 12 */
8 @TableName("${table.tableName}") 13 @TableName("${table.tableName}")
9 @Data 14 @Data
@@ -12,19 +17,24 @@ import java.util.*; @@ -12,19 +17,24 @@ import java.util.*;
12 @Builder 17 @Builder
13 @NoArgsConstructor 18 @NoArgsConstructor
14 @AllArgsConstructor 19 @AllArgsConstructor
15 -public class ${table.tableName}DO extends BaseDO { 20 +public class ${table.className}DO extends BaseDO {
16 21
17 #foreach ($column in $columns) 22 #foreach ($column in $columns)
  23 +#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段
18 /** 24 /**
19 * ${column.columnComment} 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 @TableId 31 @TableId
23 #end 32 #end
24 -#if(${column.primaryKey} && ${column.javaType} == 'String') 33 +#if (${column.primaryKey} && ${column.javaType} == 'String')##处理主键 + String 的情况
25 @TableId(type = IdType.INPUT) 34 @TableId(type = IdType.INPUT)
26 #end 35 #end
27 private ${column.javaType} ${column.javaField}; 36 private ${column.javaType} ${column.javaField};
28 #end 37 #end
  38 +#end
29 39
30 } 40 }