1 mybatis-plus概述
1.1 官方地址
https://baomidou.com/
2 搭建mybatis-plus 环境
2.1 pom.xm导包
控制包版本
<properties><java.version>1.8</java.version><mybatis-plus-version>3.4.3.4</mybatis-plus-version><mybatis-plus-generator-version>3.5.1</mybatis-plus-generator-version><fastjson-version>1.2.47</fastjson-version><freemarker.version>2.3.28</freemarker.version><swagger2.version>2.9.2</swagger2.version></properties>
导入包
<!-- mysql数据库驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- mybatis plus 代码生成器 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybatis-plus-generator-version}</version></dependency><!-- mybatis plus 依赖包--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus-version}</version></dependency><!-- fastjson,阿里json包--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson-version}</version></dependency><!-- freemarker模板引擎--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>${freemarker.version}</version></dependency><!-- swagger文档依赖包--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger2.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger2.version}</version></dependency>
2.2 新建application.yml,并且配置如下
server:port: 8081servlet:context-path: /spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/cundao?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 123456jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8serialization:write-dates-as-timestamps: falsemybatis-plus:configuration:map-underscore-to-camel-case: trueauto-mapping-behavior: fulllog-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath*:mapper/**/*Mapper.xmlglobal-config:# 逻辑删除配置db-config:# 删除前logic-not-delete-value: 1# 删除后logic-delete-value: 0# 开发环境配置#Swagger 展示设置 生产环境关闭swagger:enable: truetitle: 后台管理 APIspackage: com.alpaak.hellospringboot.controllerversion: 1.0.0
2.3 mybatisplus分页插件MybatisPlusConfig
package com.alpaak.hellospringboot.config;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;//Spring boot方式@Configuration@MapperScan("com.alpaak.hellospringboot.mapper")public class MybatisPlusConfig {// 旧版// @Bean// public PaginationInterceptor paginationInterceptor() {// PaginationInterceptor paginationInterceptor = new PaginationInterceptor();// // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false// // paginationInterceptor.setOverflow(false);// // 设置最大单页限制数量,默认 500 条,-1 不受限制// // paginationInterceptor.setLimit(500);// // 开启 count 的 join 优化,只针对部分 left join// paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));// return paginationInterceptor;// }// 最新版@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}}
2.4 mybatisplus自动生成代码MybatisGenerator.java
package com.alpaak.hellospringboot;import com.baomidou.mybatisplus.generator.FastAutoGenerator;import com.baomidou.mybatisplus.generator.config.OutputFile;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.Collections;/*** @Description: 类描述 代码生成器* @author: alpaak* @date: 2021/12/22 15:30* @Since 1.0*/public class MybatisGenerator {// 本地项目路径 - 要改private final static String LOCAL_PATH = "D:\\3-study\\cundao\\hello-springboot";// xml包路径private final static String MAPPER_XML_PATH = "/src/main/resources/mapper";// 包路径private final static String PACKAGE_PATH = "/src/main/java";//项目包路径private final static String PACKAGE_NAME = "com.alpaak.hellospringboot";//作者private final static String AUTHOR = "alpaak";//数据库private final static String DATABASE = "cundao";//服务器地址private final static String DB_HOST = "127.0.0.1:3306";//帐号private final static String DB_USERNAME = "root";//密码private final static String DB_PASSWORD = "123456";//数据库表 - 通过表成成代码 - 要改private final static String[] TABLES = new String[]{"user"};public static void main(String[] args) {String dbUrl = "jdbc:mysql://" + DB_HOST + "/" + DATABASE + "?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false";FastAutoGenerator.create(dbUrl,DB_USERNAME ,DB_PASSWORD).globalConfig(builder -> {builder.author(AUTHOR) // 设置作者.enableSwagger() // 开启 swagger 模式.fileOverride() // 覆盖已生成文件.outputDir(LOCAL_PATH + PACKAGE_PATH); // 指定输出目录}).packageConfig(builder -> {builder.parent(PACKAGE_NAME) // 设置父包名.moduleName("") // 设置父包模块名.pathInfo(Collections.singletonMap(OutputFile.mapperXml, LOCAL_PATH + MAPPER_XML_PATH)); // 设置mapperXml生成路径}).strategyConfig(builder -> {builder.addInclude(TABLES); // 设置需要生成的表名// .addTablePrefix("t_", "c_"); // 设置过滤表前缀}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板.execute();}}
2.5 测试MybatisGenerator功能
2.5.1 自动生成controller、service、impl、entity、mapper接口、mapper的xml
2.5.2 类结构
2.5.3 service接口结构

2.5.4 service实现类结构
通过官网,可以看到此结构为我们提供了30多个已经实现的方法,任君享用
2.5.5 mapper接口结构
通过官网,可以看到此结构为我们提供了10多个已经实现的方法,任君享用
空的UserMapper.xml,提供用户自定义查询
3 controller接口开发
package com.alpaak.hellospringboot.controller;import com.alpaak.hellospringboot.entity.User;import com.alpaak.hellospringboot.modle.qo.CommonQo;import com.alpaak.hellospringboot.service.IUserService;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;/*** <p>* 前端控制器* </p>** @author alpaak* @since 2021-12-22*/@Api(tags = "用户接口")@RestController@RequestMapping("/user")public class UserController {@Autowiredprivate IUserService userService;@ApiOperation(value = "根据用户id获得用户", notes = "")@GetMapping("/getUser")public User getUser(Integer id) {return userService.getById(id);}@ApiOperation(value = "分页查询用户", notes = "")@GetMapping("/getUserPage")public IPage<User> getUserPage(CommonQo qo) {// 第几页int current = qo.getCurrent();// 当前面int size = qo.getSize();Page<User> page = new Page<>(current, size);return userService.page(page);}@ApiOperation(value = "保存用户", notes = "")@PostMapping("/addUser")public String addUser(@RequestBody User user) {boolean count = userService.saveOrUpdate(user);if (count) {return "保存成功";} else {return "保存失败";}}@ApiOperation(value = "删除用户", notes = "")@PostMapping("/delUser")public String delUser(Integer id) {boolean count = userService.removeById(id);if (count) {return "删除成功";} else {return "删除失败";}}}
4 运行程序,用swagger测试
4.1 运行main程序

运行成功日志如下
4.2 运行swagger
4.2.1 打开swagger
浏览器中黏贴:http://127.0.0.1:8081/swagger-ui.html#/
运行如下:
4.2.2 使用swagger测试接口
4.2.3 返回结果:

4.2.4 swagger的好处
- 号称世界上最流行的API框架
- RestFul API文档在线生成工具—->>>API文档与API同步更新
- 可以直接运行,可以在线测试API接口
- 实体对象属性明了

5 项目源码地址
https://gitee.com/alpaak/hello-springboot.git
使用gitbash命令下载:
git clone https://gitee.com/alpaak/hello-springboot.git
