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