Java MyBatis-Plus代码生成器V3.5.2 模板
1、pom
<!-- https://github.com/baomidou/generator --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency>
2、参考代码
FastAutoGenerator.create(url, username, password) // .templateConfig((scanner, builder) -> builder // .controller("") // 设置空,则不会生成Controller类 // ) .globalConfig(builder -> { builder.author("authorxx") // 设置作者 .enableSwagger() // 开启 swagger 模式 默认值:false .disableOpenDir() // 禁止打开输出目录 默认值:true .commentDate("yyyy-MM-dd HH:mm:ss") // 设置注释的日期格式 .dateType(DateType.TIME_PACK) // 使用java8新的时间类型 .outputDir(outputPath); // 指定输出目录 }) .packageConfig(builder -> { builder.parent("com.abc.efg") // 设置父包名 .moduleName(null) // 设置父包模块名 .pathInfo(Collections.singletonMap(OutputFile.xml, xmlPath)); // 设置mapperXml生成路径 }) // 使用Freemarker引擎模板(需要引入依赖),默认的是Velocity引擎模板 // .templateEngine(new FreemarkerTemplateEngine()) .strategyConfig(builder -> { builder.entityBuilder().enableLombok(); // add -> @@Getter and @Setter =>模板转成@Data builder.controllerBuilder().enableRestStyle(); // @Controller -> @RestController // builder.entityBuilder().columnNaming(NamingStrategy.no_change); //列名保持不变,下划线不转驼峰法 builder.entityBuilder().columnNaming(NamingStrategy.underline_to_camel); //下划线转驼峰法 builder.entityBuilder().enableTableFieldAnnotation(); // 属性加上注解说明 builder.entityBuilder().addIgnoreColumns("deleted"); // 不生成的字段 builder.entityBuilder().fileOverride(); //覆盖已生成实体 // 设置需要生成的表名--需要的时候直接替换表名即可 List<String> tables = new ArrayList<String>(); tables.add("tab_xxx".trim().toUpperCase()); tables.add("tab_xx".trim().toUpperCase()); builder.addInclude(tables) .addTablePrefix("tab_", "t_"); // 设置过滤表前缀 }) .execute();
3、实体模板
package ${package.Entity}; #foreach($pkg in ${table.importPackages}) import ${pkg}; #end #if(${swagger}) import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; #end #if(${entityLombokModel}) import lombok.Data; #if(${chainModel}) import lombok.experimental.Accessors; #end #end /** * <p> * $!{table.comment} * </p> * * @author ${author} * @since ${date} */ #if(${entityLombokModel}) @Data #if(${chainModel}) @Accessors(chain = true) #end #end #if(${table.convert}) @TableName("${schemaName}${table.name}") #end #if(${swagger}) @ApiModel(value = "${entity}对象", description = "$!{table.comment}") #end #if(${superEntityClass}) public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end { #elseif(${activeRecord}) public class ${entity} extends Model<${entity}> { #elseif(${entitySerialVersionUID}) public class ${entity} implements Serializable { #else public class ${entity} { #end #if(${entitySerialVersionUID}) private static final long serialVersionUID = 1L; #end ## ---------- BEGIN 字段循环遍历 ---------- #foreach($field in ${table.fields}) #if(${field.keyFlag}) #set($keyPropertyName=${field.propertyName}) #end #if("$!field.comment" != "") #if(${swagger}) /** * ${field.comment} */ @ApiModelProperty("${field.comment}") #else /** * ${field.comment} */ #end #end #if(${field.keyFlag}) ## 主键 #if(${field.keyIdentityFlag}) @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO) #elseif(!$null.isNull(${idType}) && "$!idType" != "") @TableId(value = "${field.annotationColumnName}", type = IdType.${idType}) #elseif(${field.convert}) @TableId("${field.annotationColumnName}") #end ## 普通字段 #elseif(${field.fill}) ## ----- 存在字段填充设置 ----- #if(${field.convert}) @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill}) #else @TableField(fill = FieldFill.${field.fill}) #end #elseif(${field.convert}) @TableField("${field.annotationColumnName}") #end ## 乐观锁注解 #if(${field.versionField}) @Version #end ## 逻辑删除注解 #if(${field.logicDeleteField}) @TableLogic #end private ${field.propertyType} ${field.propertyName}; #end ## ---------- END 字段循环遍历 ---------- #if(!${entityLombokModel}) #foreach($field in ${table.fields}) #if(${field.propertyType.equals("boolean")}) #set($getprefix="is") #else #set($getprefix="get") #end public ${field.propertyType} ${getprefix}${field.capitalName}() { return ${field.propertyName}; } #if(${chainModel}) public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { #else public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { #end this.${field.propertyName} = ${field.propertyName}; #if(${chainModel}) return this; #end } #end ## --foreach end--- #end ## --end of #if(!${entityLombokModel})-- #if(${entityColumnConstant}) #foreach($field in ${table.fields}) public static final String ${field.name.toUpperCase()} = "${field.name}"; #end #end #if(${activeRecord}) @Override public Serializable pkVal() { #if(${keyPropertyName}) return this.${keyPropertyName}; #else return null; #end } #end #if(!${entityLombokModel}) @Override public String toString() { return "${entity}{" + #foreach($field in ${table.fields}) #if($!{foreach.index}==0) "${field.propertyName}=" + ${field.propertyName} + #else ", ${field.propertyName}=" + ${field.propertyName} + #end #end "}"; } #end }
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号