Commit 763e20796bb3258df1a4fe20fb496041bbb0e882

Authored by YunaiV
1 parent b8015e87

基于 Velocity 的 macro 和 parse 指令,优化模板的可维护性

src/main/resources/codegen/controller/vo/_column.vm 0 → 100644
  1 +## 提供给 baseVO、createVO、updateVO 生成字段
  2 + @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end)
  3 +#if (!${column.nullable})## 判断 @NotEmpty 和 @NotNull 注解
  4 +#if (${field.fieldType} == 'String')
  5 + @NotEmpty(message = "${column.columnComment}不能为空")
  6 +#else
  7 + @NotNull(message = "${column.columnComment}不能为空")
  8 +#end
  9 +#end
  10 +#if (${column.javaType} == "Date")## 时间类型
  11 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  12 +#end
  13 + private ${column.javaType} ${column.javaField};
src/main/resources/codegen/controller/vo/baseVO.vm
@@ -14,14 +14,7 @@ public class ${table.className}BaseVO { @@ -14,14 +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 - @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end)  
18 -#if (!${column.nullable})#if (${field.fieldType} == 'String')## 判断 @NotEmpty 和 @NotNull 注解  
19 - @NotEmpty(message = "${column.columnComment}不能为空")  
20 -#else  
21 - @NotNull(message = "${column.columnComment}不能为空")  
22 -#end  
23 -#end  
24 - private ${column.javaType} ${column.javaField}; 17 + #parse("codegen/controller/vo/_column.vm")
25 18
26 #end 19 #end
27 #end 20 #end
src/main/resources/codegen/controller/vo/createReqVO.vm
@@ -4,6 +4,16 @@ import lombok.*; @@ -4,6 +4,16 @@ import lombok.*;
4 import java.util.*; 4 import java.util.*;
5 import io.swagger.annotations.*; 5 import io.swagger.annotations.*;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
  7 +## 处理 Date 字段的引入
  8 +#foreach ($column in $columns)
  9 +#if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult})
  10 + && ${column.javaType} == "Date")## 时间类型
  11 +import org.springframework.format.annotation.DateTimeFormat;
  12 +
  13 +import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  14 +#break
  15 +#end
  16 +#end
7 17
8 @ApiModel("${table.classComment}创建 Request VO") 18 @ApiModel("${table.classComment}创建 Request VO")
9 @Data 19 @Data
@@ -13,14 +23,7 @@ public class ${table.className}CreateReqVO extends ${table.className}BaseVO { @@ -13,14 +23,7 @@ public class ${table.className}CreateReqVO extends ${table.className}BaseVO {
13 23
14 #foreach ($column in $columns) 24 #foreach ($column in $columns)
15 #if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 25 #if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段
16 - @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end)  
17 -#if (!${column.nullable})#if (${field.fieldType} == 'String')## 判断 @NotEmpty 和 @NotNull 注解  
18 - @NotEmpty(message = "${column.columnComment}不能为空")  
19 -#else  
20 - @NotNull(message = "${column.columnComment}不能为空")  
21 -#end  
22 -#end  
23 - private ${column.javaType} ${column.javaField}; 26 + #parse("codegen/controller/vo/_column.vm")
24 27
25 #end 28 #end
26 #end 29 #end
src/main/resources/codegen/controller/vo/pageReqVO.vm
@@ -4,42 +4,39 @@ import lombok.*; @@ -4,42 +4,39 @@ import lombok.*;
4 import java.util.*; 4 import java.util.*;
5 import io.swagger.annotations.*; 5 import io.swagger.annotations.*;
6 import ${PageParamClassName}; 6 import ${PageParamClassName};
7 -#if (${hasDateColumn}) 7 +## 处理 Date 字段的引入
  8 +#foreach ($column in $columns)
  9 +#if (${column.listOperation} && ${column.javaType} == "Date")## 时间类型
8 import org.springframework.format.annotation.DateTimeFormat; 10 import org.springframework.format.annotation.DateTimeFormat;
9 11
10 import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 12 import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  13 +#break
  14 +#end
  15 +#end
  16 +## 字段模板
  17 +#macro(columnTpl $prefix $prefixStr)
  18 +#if (${column.javaType} == "Date")## 时间类型
  19 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  20 +#end
  21 + @ApiModelProperty(value = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end)
  22 + private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end;
11 #end 23 #end
12 24
13 @ApiModel("${table.classComment}分页 Request VO") 25 @ApiModel("${table.classComment}分页 Request VO")
14 @Data 26 @Data
15 @EqualsAndHashCode(callSuper = true) 27 @EqualsAndHashCode(callSuper = true)
16 @ToString(callSuper = true) 28 @ToString(callSuper = true)
17 -@Builder  
18 -@NoArgsConstructor  
19 -@AllArgsConstructor  
20 public class ${table.className}PageReqVO extends PageParam { 29 public class ${table.className}PageReqVO extends PageParam {
21 30
22 #foreach ($column in $columns) 31 #foreach ($column in $columns)
23 #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 32 #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
24 #if (${column.listOperation})##查询操作 33 #if (${column.listOperation})##查询操作
25 #if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 34 #if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候
26 - @ApiModelProperty(value = "开始${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end)  
27 -#if (${column.javaType} == "Date")## 时间类型  
28 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
29 -#end  
30 - private ${column.javaType} begin${JavaField}; 35 + #columnTpl('begin', '开始')
31 36
32 - @ApiModelProperty(value = "结束${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end)  
33 -#if (${column.javaType} == "Date")## 时间类型  
34 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
35 -#end  
36 - private ${column.javaType} end${JavaField}; 37 + #columnTpl('end', '结束')
37 #else##情况二,非 Between 的时间 38 #else##情况二,非 Between 的时间
38 -#if (${column.javaType} == "Date")## 时间类型  
39 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
40 -#end  
41 - @ApiModelProperty(value = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end)  
42 - private ${column.javaType} ${column.javaField}; 39 +#columnTpl('', '')
43 #end 40 #end
44 41
45 #end 42 #end
src/main/resources/codegen/controller/vo/updateReqVO.vm
@@ -4,6 +4,16 @@ import lombok.*; @@ -4,6 +4,16 @@ import lombok.*;
4 import java.util.*; 4 import java.util.*;
5 import io.swagger.annotations.*; 5 import io.swagger.annotations.*;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
  7 +## 处理 Date 字段的引入
  8 +#foreach ($column in $columns)
  9 +#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))
  10 + && ${column.javaType} == "Date")## 时间类型
  11 +import org.springframework.format.annotation.DateTimeFormat;
  12 +
  13 +import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  14 +#break
  15 +#end
  16 +#end
7 17
8 @ApiModel("${table.classComment}更新 Request VO") 18 @ApiModel("${table.classComment}更新 Request VO")
9 @Data 19 @Data
@@ -13,8 +23,7 @@ public class ${table.className}UpdateReqVO extends ${table.className}BaseVO { @@ -13,8 +23,7 @@ public class ${table.className}UpdateReqVO extends ${table.className}BaseVO {
13 23
14 #foreach ($column in $columns) 24 #foreach ($column in $columns)
15 #if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 25 #if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段
16 - @ApiModelProperty(value = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end)  
17 - private ${column.javaType} ${column.javaField}; 26 + #parse("codegen/controller/vo/_column.vm")
18 27
19 #end 28 #end
20 #end 29 #end
src/main/resources/codegen/dal/mapper.vm
@@ -6,6 +6,11 @@ import ${BaseMapperClassName}; @@ -6,6 +6,11 @@ import ${BaseMapperClassName};
6 import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO; 6 import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO;
7 import org.apache.ibatis.annotations.Mapper; 7 import org.apache.ibatis.annotations.Mapper;
8 8
  9 +/**
  10 +* ${table.classComment} Mapper
  11 +*
  12 +* @author ${table.author}
  13 +*/
9 @Mapper 14 @Mapper
10 public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { 15 public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> {
11 16