首页
/ 【限时免费】 MyBatis-Plus自定义代码生成模板实践指南

【限时免费】 MyBatis-Plus自定义代码生成模板实践指南

2026-02-04 04:50:01作者:胡易黎Nicole

背景介绍

MyBatis-Plus作为MyBatis的增强工具,其代码生成器功能广受开发者喜爱。最新版本的代码生成器支持通过自定义模板来生成DTO、VO等自定义类,这为项目开发提供了极大的灵活性。本文将详细介绍如何在MyBatis-Plus中实现自定义模板的配置与使用。

模板引擎选择

MyBatis-Plus代码生成器支持两种主流的模板引擎:

  1. FreeMarker:使用.ftl后缀的模板文件
  2. Velocity:使用.vm后缀的模板文件

开发者可以根据项目需求和个人偏好选择适合的模板引擎。

自定义DTO模板实现

基础配置步骤

  1. 创建模板文件:在项目的resources/templates目录下创建自定义模板文件,如entityDTO.java.ftlentityDTO.java.vm

  2. 模板内容示例(以FreeMarker为例):

package ${package.EntityDTO};

<#list table.importPackages as pkg>
import ${pkg};
</#list>
<#if swagger2>
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
</#if>

/**
 * <p>
 * ${table.comment!}数据传输对象
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
<#if entityLombokModel>
@Data
<#if superEntityClass??>
@EqualsAndHashCode(callSuper = true)
<#else>
@EqualsAndHashCode(callSuper = false)
</#if>
@Accessors(chain = true)
</#if>
<#if swagger2>
@ApiModel(value="${entity}DTO对象", description="${table.comment!}")
</#if>
public class ${entity}DTO<#if superEntityClass??> extends ${superEntityClass}<#else><#if activeRecord> extends Model<${entity}></#if></#if> {
<#-- ----------  属性循环  ---------->
<#list table.fields as field>
    <#if field.keyFlag>
        <#assign keyPropertyName="${field.propertyName}"/>
    </#if>

    <#if field.comment!?length gt 0>
    <#if swagger2>
    @ApiModelProperty(value = "${field.comment}")
    <#else>
    /**
     * ${field.comment}
     */
    </#if>
    </#if>
    private ${field.propertyType} ${field.propertyName};
</#list>
}
  1. 生成器配置:在代码生成器配置中指定自定义模板
// 配置自定义模板
TemplateConfig templateConfig = new TemplateConfig.Builder()
    .entity("templates/entity.java")
    .entityDto("templates/entityDTO.java.ftl") // 指定DTO模板
    .build();

模板变量说明

MyBatis-Plus提供了丰富的模板变量供开发者使用:

  • ${package.EntityDTO}:DTO类包名
  • ${table.comment}:表注释
  • ${author}:作者信息
  • ${date}:当前日期
  • ${entity}:实体类名
  • ${table.fields}:表字段集合
  • ${field.propertyName}:字段属性名
  • ${field.propertyType}:字段类型
  • ${field.comment}:字段注释

高级应用技巧

条件判断

模板中可以使用条件判断来实现灵活的代码生成:

<#if swagger2>
@ApiModel(value="${entity}DTO对象", description="${table.comment!}")
</#if>

循环处理

对于表字段可以使用循环进行处理:

<#list table.fields as field>
    private ${field.propertyType} ${field.propertyName};
</#list>

继承关系处理

处理实体类的继承关系:

public class ${entity}DTO<#if superEntityClass??> extends ${superEntityClass}<#else><#if activeRecord> extends Model<${entity}></#if></#if> {

常见问题解决方案

  1. 模板不生效:检查模板路径是否正确,确保模板文件放在resources目录下

  2. 变量解析错误:确认使用的变量名称与MyBatis-Plus提供的变量一致

  3. 生成代码格式问题:模板中注意缩进和换行,确保生成的代码格式正确

  4. 版本兼容性问题:确保使用的模板语法与当前MyBatis-Plus版本兼容

最佳实践建议

  1. 模板模块化:将公共部分提取为单独模板文件,通过include引入

  2. 注释完善:在模板中添加充分的注释,方便后续维护

  3. 版本控制:将模板文件纳入版本控制,记录模板变更历史

  4. 模板测试:建立模板测试用例,确保模板修改后生成代码的正确性

通过合理使用MyBatis-Plus的自定义模板功能,开发者可以大幅提升开发效率,同时保持项目代码风格的一致性。掌握这些技巧后,开发者可以根据项目需求灵活定制各种类型的代码生成模板。

登录后查看全文
热门项目推荐
相关项目推荐