myabtis-plus 代码生成器自定义模板

文章介绍了如何自定义Mybatis-Plus的代码生成器模板,以增强默认的Controller类,包括复制原生模板到自定义目录,添加Swagger注解,以及配置代码生成器使用自定义模板路径,从而提高开发效率。
摘要由CSDN通过智能技术生成

        mybatis-plus代码生成器默认生成的controller是下面这样的,一个空的controller。

@RestController
@RequestMapping("/sysUserRoleRelevance")
public class SysUserRoleRelevanceController {

}

为了方便编码,可以给controller模板添加自定义内容,重复编码,其他类文件一样,看个人需求。

1、找到原生模板,我们选择ftl类型的模板

 2、复制原生模板到我们的自定义目录

 3、给模板添加自定义内容

package ${package.Controller};

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
<#if restControllerStyle>
import org.springframework.web.bind.annotation.RestController;
<#else>
import org.springframework.stereotype.Controller;
</#if>
<#if superControllerClassPackage??>
import ${superControllerClassPackage};
</#if>

/**
 * <p>
 * ${table.comment!} 前端控制器
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
@Api(tags = "${table.comment!}")
<#if restControllerStyle>
@RestController
<#else>
@Controller
</#if>
@RequestMapping("<#if package.ModuleName?? && package.ModuleName != "">/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
<#if kotlin>
class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
<#else>
<#if superControllerClass??>
public class ${table.controllerName} extends ${superControllerClass} {
<#else>
public class ${table.controllerName} {
</#if>

  @ApiOperation("创建")
  @PostMapping("/create")
  public void create(@RequestBody ${table.entityName} <#if package.ModuleName?? && package.ModuleName != "">${package.ModuleName}</#if><#if controllerMappingHyphenStyle>${controllerMappingHyphen}<#else>${table.entityPath}</#if>){}

  @ApiOperation("修改")
  @PostMapping("/update")
  public void update(@RequestBody ${table.entityName} <#if package.ModuleName?? && package.ModuleName != "">${package.ModuleName}</#if><#if controllerMappingHyphenStyle>${controllerMappingHyphen}<#else>${table.entityPath}</#if>){}

  @ApiOperation("删除")
  @PostMapping("/delete")
  public void delete(@RequestBody List<Long> idList){}

  @ApiOperation("查询详情")
  @PostMapping("/details")
  public ResponseEntity<${table.entityName}> details(@RequestParam("id") Long id){
    return ResponseEntity.ok(null);
  }

  @ApiOperation("查询")
  @PostMapping("/list")
  public ResponseEntity<List> list(@RequestBody Object dto){
    return ResponseEntity.ok(null);
  }

  @ApiOperation("分页")
  @PostMapping("/page")
  public ResponseEntity<Page> page(@RequestBody Object dto){
    return ResponseEntity.ok(null);
  }
}
</#if>

4、在代码生成器中配置自定义模板路径

            //模板配置
            .templateConfig(builder -> {
                builder.controller("/templates/generator/controller.java");
            })

5、运行后效果

@Api(tags = "用户-角色关联表")
@RestController
@RequestMapping("/sysUserRoleRelevance")
public class SysUserRoleRelevanceController {

  @ApiOperation("创建")
  @PostMapping("/create")
  public void create(@RequestBody SysUserRoleRelevance sysUserRoleRelevance){}

  @ApiOperation("修改")
  @PostMapping("/update")
  public void update(@RequestBody SysUserRoleRelevance sysUserRoleRelevance){}

  @ApiOperation("删除")
  @PostMapping("/delete")
  public void delete(@RequestBody List<Long> idList){}

  @ApiOperation("查询详情")
  @PostMapping("/details")
  public ResponseEntity<SysUserRoleRelevance> details(@RequestParam("id") Long id){
    return ResponseEntity.ok(null);
  }

  @ApiOperation("查询")
  @PostMapping("/list")
  public ResponseEntity<List> list(@RequestBody Object dto){
    return ResponseEntity.ok(null);
  }

  @ApiOperation("分页")
  @PostMapping("/page")
  public ResponseEntity<Page> page(@RequestBody Object dto){
    return ResponseEntity.ok(null);
  }
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MyBatis-Plus代码生成器提供了自定义模板的功能,可以根据自己的需求生成对应的代码。下面是自定义模板的处理步骤: 1. 在代码生成器的配置文件中,设置自定义模板的路径。例如: ``` <property name="templatePath" value="/templates/mybatis-plus"/> ``` 2. 在自定义模板路径下创建对应的模板文件。例如,创建一个模板文件 `Entity.java.vm`,用于生成实体类的代码。 3. 在模板文件中使用 Velocity 模板语言,编写生成代码的逻辑。例如: ``` package ${package_name}.${module_name}.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * ${table_comment} * </p> */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("${table_name}") public class ${entity_name} { private static final long serialVersionUID = 1L; #foreach($field in $fields) /** * ${field.comment} */ private ${field.javaType} ${field.name}; #end } ``` 4. 在代码生成器中配置要使用的自定义模板。例如: ``` <property name="templateConfig"> <bean class="com.baomidou.mybatisplus.generator.config.TemplateConfig"> <property name="entity" value="/templates/mybatis-plus/Entity.java.vm"/> <property name="mapper" value="/templates/mybatis-plus/Mapper.java.vm"/> <property name="xml" value="/templates/mybatis-plus/Mapper.xml.vm"/> <property name="service" value="/templates/mybatis-plus/Service.java.vm"/> <property name="serviceImpl" value="/templates/mybatis-plus/ServiceImpl.java.vm"/> <property name="controller" value="/templates/mybatis-plus/Controller.java.vm"/> </bean> </property> ``` 在这个例子中,我们配置了生成实体类、Mapper接口、Mapper XML文件、Service接口、Service实现类和Controller类的模板路径。 5. 运行代码生成器,即可根据自定义模板生成对应的代码。 注意:自定义模板的命名必须与 MyBatis-Plus 内置模板的命名一致,才能正确覆盖内置模板。例如,要自定义生成实体类的模板,必须将模板文件命名为 `Entity.java.vm`。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值