Mybatis-Plus使用代码生成器

MP官网:https://baomidou.com/pages/981406/
用途:利用代码生成器可以方便地生成数据库表从mapper、entity、service、controller各层的代码
下面演示生成数据库表user的controller层代码:
1、设置controller层代码模板
可从目录:\repository\com\baomidou\mybatis-plus-generator\3.5.1\mybatis-plus-generator-3.5.1.jar!\templates\controller.java.vm
拷贝模板文件,将Velocity引擎模板文件controller.java.vm(如果是freemarker则是controller.java)放在src/main/resources/templates目录下(或者自定义目录,只要稍后在CodeGenerator类里设置一下就好了)

controller.java.vm文件:

package ${package.Controller};

##导入通用包
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

import javax.annotation.Resource;
import java.util.List;

##导入实体类包
import $!{package.Service}.$!{table.serviceName};
import ${package.Entity}.${entity};


#if(${restControllerStyle})
import org.springframework.web.bind.annotation.RestController;
#else
import org.springframework.stereotype.Controller;
#end
#if(${superControllerClassPackage})
import ${superControllerClassPackage};
#end

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

#else

#if(${superControllerClass})
public class ${table.controllerName} extends ${superControllerClass} {
#else
public class ${table.controllerName} {
#end
    @Resource
    private ${table.serviceName} ${table.entityPath}Service;

    //查询所有
    @GetMapping
    public List<${entity}> findAll() {
        return ${table.entityPath}Service.list();
    }

    //新增或删除接口
    @PostMapping
    public boolean save(@RequestBody ${entity} ${table.entityPath}){
        return ${table.entityPath}Service.saveOrUpdate(${table.entityPath});
    }

    //删除请求接口
    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable Integer id) {//这里的“id”必须和DeleteMapping里面的名字一样
        return ${table.entityPath}Service.removeById(id);
    }

    //批量删除请求接口
    @PostMapping("/batchDel")
    public boolean deleteBatch(@RequestBody List<Integer> ids) {//这里的“id”必须和DeleteMapping里面的名字一样
        return ${table.entityPath}Service.removeBatchByIds(ids);
    }

    //简单条件+分页查询
    @GetMapping("/page")
    public IPage<${entity}> findPage(
    @RequestParam Integer pageNum,
    @RequestParam Integer pageSize,
    @RequestParam(defaultValue = "") String ${table.entityPath}name) {
        IPage<${entity}> page = new Page<>(pageNum, pageSize);
        QueryWrapper<${entity}> queryWrapper = new QueryWrapper<>();

        if (!"".equals(${table.entityPath}name)) {//加条件判断可以查询null值
            queryWrapper.like("${table.entityPath}name", ${table.entityPath}name);
        }

        queryWrapper.orderByDesc("id");
        return ${table.entityPath}Service.page(page, queryWrapper);
    }
}

#end

2、创建CodeGenerator.java

package com.shelbourne.schooldelivery.utils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import java.util.Collections;
//代码生成器
public class CodeGenerator {
    public static void main(String[] args) {
        generate();
    }
    private static void generate() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/school_delivery?serverTimezone=GMT%2b8",
                "root", "123456" )
                // 全局配置
                .globalConfig(builder -> {
                    builder.author("Shelby" ) // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D:\\study\\school_delivery\\src\\main\\java" ); // 指定输出目录
                })
                // 包配置
                .packageConfig(builder -> {
                    builder.parent("com.shelbourne.schooldelivery" ) // 设置父包名
                            .moduleName(null) // 设置父包模块名,设为null可以避免@RequestMapping("/user" )出现双斜杠
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D:\\study\\school_delivery\\src\\main\\resources\\mapper\\" )); // 设置mapperXml生成路径
                })
                // 策略配置
                .strategyConfig(builder -> {
                    builder.addInclude("user" ) // 设置需要生成的表名
                            .addTablePrefix("sys_", "c_" ); // 设置过滤表前缀
                })
                // 模板配置
                .templateConfig(builder -> {
                    builder.controller("/templates/controller.java.vm" );
                })
                // 可以使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new VelocityTemplateEngine())
                .execute();
    }
}

3、运行CodeGenerator类
运行结果:
在这里插入图片描述
生成的UserController.java文件:

package com.shelbourne.schooldelivery.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

import javax.annotation.Resource;
import java.util.List;

import com.shelbourne.schooldelivery.service.IUserService;
import com.shelbourne.schooldelivery.entity.User;

import org.springframework.stereotype.Controller;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Shelby
 * @since 2022-02-27
 */
@Controller
@RequestMapping("/user" )

public class UserController {
    @Resource
    private IUserService userService;

    //查询所有
    @GetMapping
    public List<User> findAll(String username) {
        return userService.list();
    }

    //新增或删除接口
    @PostMapping
    public boolean save(@RequestBody User user){
        return userService.saveOrUpdate(user);
    }

    //删除请求接口
    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable Integer id) {//这里的“id”必须和DeleteMapping里面的名字一样
        return userService.removeById(id);
    }

    //批量删除请求接口
    @PostMapping("/batchDel")
    public boolean deleteBatch(@RequestBody List<Integer> ids) {//这里的“id”必须和DeleteMapping里面的名字一样
        return userService.removeBatchByIds(ids);
    }

    //简单条件+分页查询
    @GetMapping("/page")
    public IPage<User> findPage(
    @RequestParam Integer pageNum,
    @RequestParam Integer pageSize,
    @RequestParam(defaultValue = "") String username) {
        IPage<User> page = new Page<>(pageNum, pageSize);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();

        if (!"".equals(username)) {//加条件判断可以查询null值
            queryWrapper.like("username", username);
        }

        queryWrapper.orderByDesc("id");
        return userService.page(page, queryWrapper);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值