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  
15 15 #foreach ($column in $columns)
16 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 19 #end
27 20 #end
... ...
src/main/resources/codegen/controller/vo/createReqVO.vm
... ... @@ -4,6 +4,16 @@ import lombok.*;
4 4 import java.util.*;
5 5 import io.swagger.annotations.*;
6 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 18 @ApiModel("${table.classComment}创建 Request VO")
9 19 @Data
... ... @@ -13,14 +23,7 @@ public class ${table.className}CreateReqVO extends ${table.className}BaseVO {
13 23  
14 24 #foreach ($column in $columns)
15 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 28 #end
26 29 #end
... ...
src/main/resources/codegen/controller/vo/pageReqVO.vm
... ... @@ -4,42 +4,39 @@ import lombok.*;
4 4 import java.util.*;
5 5 import io.swagger.annotations.*;
6 6 import ${PageParamClassName};
7   -#if (${hasDateColumn})
  7 +## 处理 Date 字段的引入
  8 +#foreach ($column in $columns)
  9 +#if (${column.listOperation} && ${column.javaType} == "Date")## 时间类型
8 10 import org.springframework.format.annotation.DateTimeFormat;
9 11  
10 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 23 #end
12 24  
13 25 @ApiModel("${table.classComment}分页 Request VO")
14 26 @Data
15 27 @EqualsAndHashCode(callSuper = true)
16 28 @ToString(callSuper = true)
17   -@Builder
18   -@NoArgsConstructor
19   -@AllArgsConstructor
20 29 public class ${table.className}PageReqVO extends PageParam {
21 30  
22 31 #foreach ($column in $columns)
23 32 #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
24 33 #if (${column.listOperation})##查询操作
25 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 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 40 #end
44 41  
45 42 #end
... ...
src/main/resources/codegen/controller/vo/updateReqVO.vm
... ... @@ -4,6 +4,16 @@ import lombok.*;
4 4 import java.util.*;
5 5 import io.swagger.annotations.*;
6 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 18 @ApiModel("${table.classComment}更新 Request VO")
9 19 @Data
... ... @@ -13,8 +23,7 @@ public class ${table.className}UpdateReqVO extends ${table.className}BaseVO {
13 23  
14 24 #foreach ($column in $columns)
15 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 28 #end
20 29 #end
... ...
src/main/resources/codegen/dal/mapper.vm
... ... @@ -6,6 +6,11 @@ import ${BaseMapperClassName};
6 6 import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO;
7 7 import org.apache.ibatis.annotations.Mapper;
8 8  
  9 +/**
  10 +* ${table.classComment} Mapper
  11 +*
  12 +* @author ${table.author}
  13 +*/
9 14 @Mapper
10 15 public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> {
11 16  
... ...