使用velocity模板引擎生成代码格式不对的问题
模板代码块下:
## ---------- BEGIN 字段循环遍历 ---------- #foreach($field in ${table.fields}) #if(${field.keyFlag}) #set($keyPropertyName=${field.propertyName}) #end #if("$!field.comment" != "") /** * ${field.comment} */ #end @ApiModelProperty(name = "${field.propertyName}", value = "${field.comment}", dataType = "${field.propertyType}") #if(${field.keyFlag}) ## 主键 @TableId(value = "${field.name}", type = IdType.UUID) #elseif(${field.fill}) ## 普通字段 ## ----- 存在字段填充设置 ----- @TableField(value = "${field.name}", fill = FieldFill.${field.fill}) #elseif(${field.name}=="tenantId") @TableField(value = "${field.name}", exist=false) #elseif(${field.convert}) @TableField("${field.name}") #end ## 乐观锁注解 #if(${versionFieldName}==${field.name}) @Version #end ## 逻辑删除注解 #if(${logicDeleteFieldName}==${field.name}) @TableLogic #end private ${field.propertyType} ${field.propertyName}; #end ## ---------- END 字段循环遍历 ----------
生成代码如图所示:
/** * 角色ID */ @ApiModelProperty(name = "roleId", value = "角色ID", dataType = "Long") @TableId(value = "ROLE_ID", type = IdType.UUID) private Long roleId; /** * 角色名称 */ @ApiModelProperty(name = "roleName", value = "角色名称", dataType = "String") @TableField("ROLE_NAME") private String roleName; /** * 角色描述 */ @ApiModelProperty(name = "remark", value = "角色描述", dataType = "String") @TableField("REMARK") private String remark; /** * 创建时间 */ @ApiModelProperty(name = "createTime", value = "创建时间", dataType = "LocalDateTime") @TableField("CREATE_TIME") private LocalDateTime createTime; /** * 修改时间 */ @ApiModelProperty(name = "modifyTime", value = "修改时间", dataType = "LocalDateTime") @TableField("MODIFY_TIME") private LocalDateTime modifyTime;
可见缩进格式完全混乱,不利于阅读。
原因是因为velocity把空格缩进原封输出到代码格式中,因此模板中的脚本命令需要顶格编写,虽然影响可读性,但能保证生成代码的格式,另外这个顶格编写的命令,是包括注释关键字在内的。
修改后的模板文件如下:
## ---------- BEGIN 字段循环遍历 ---------- #foreach($field in ${table.fields}) #if(${field.keyFlag}) #set($keyPropertyName=${field.propertyName}) #end #if("$!field.comment" != "") /** * ${field.comment} */ #end @ApiModelProperty(name = "${field.propertyName}", value = "${field.comment}", dataType = "${field.propertyType}") #if(${field.keyFlag}) ## 主键 @TableId(value = "${field.name}", type = IdType.UUID) #elseif(${field.fill}) ## 普通字段 ## ----- 存在字段填充设置 ----- @TableField(value = "${field.name}", fill = FieldFill.${field.fill}) #elseif(${field.name}=="tenantId") @TableField(value = "${field.name}", exist=false) #elseif(${field.convert}) @TableField("${field.name}") #end ## 乐观锁注解 #if(${versionFieldName}==${field.name}) @Version #end ## 逻辑删除注解 #if(${logicDeleteFieldName}==${field.name}) @TableLogic #end private ${field.propertyType} ${field.propertyName}; #end ## ---------- END 字段循环遍历 ----------