SpringBoot2.7.10 + JDK17 + MySQL8.0.30社区版 + Mybatis-plus(简介 | MyBatis-Plus (baomidou.com)),这是一个简单的SpringBootWeb项目。
数据库数据可以直接使用Navicat直接导入运行SQL文件就行了,或者复制下面的SQL语句进行导入数据,也可以复制下面语句到txt文件中,然后重命名为SQL。然后使用Navicat导入数据
/*
Navicat Premium Data Transfer
Source Server : mysql8.0.30
Source Server Type : MySQL
Source Server Version : 80030
Source Host : localhost:3306
Source Schema : test
Target Server Type : MySQL
Target Server Version : 80030
File Encoding : 65001
Date: 05/11/2023 23:39:10
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for sys_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`role_name` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '角色名称',
`describe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '角色描述',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `sys_role_id_uindex`(`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_role
-- ----------------------------
INSERT INTO `sys_role` VALUES (1, '超级管理员', '超级管理员');
INSERT INTO `sys_role` VALUES (2, '管理员', '管理员');
INSERT INTO `sys_role` VALUES (3, '普通角色', '普通角色');
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名',
`age` int NULL DEFAULT 0 COMMENT '年龄',
`sex` int NULL DEFAULT 0 COMMENT '性别(0,女,1,男)',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `sys_user_id_uindex`(`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1, '张三', 98, 1);
INSERT INTO `sys_user` VALUES (2, '李四', 80, 1);
INSERT INTO `sys_user` VALUES (3, '王五', 60, 1);
INSERT INTO `sys_user` VALUES (4, '赵六', 40, 1);
INSERT INTO `sys_user` VALUES (5, '赵柳', 24, 0);
INSERT INTO `sys_user` VALUES (6, '钱七', 24, 0);
INSERT INTO `sys_user` VALUES (7, '逻辑', 108, 1);
INSERT INTO `sys_user` VALUES (8, '程心', 24, 0);
INSERT INTO `sys_user` VALUES (9, '张小三', 40, 0);
INSERT INTO `sys_user` VALUES (10, '李小四', 24, 1);
INSERT INTO `sys_user` VALUES (11, '王小五', 24, 0);
INSERT INTO `sys_user` VALUES (12, '赵小柳', 24, 0);
-- ----------------------------
-- Table structure for sys_user_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户角色联系表ID',
`user_id` bigint NULL DEFAULT NULL COMMENT '用户ID',
`role_id` bigint NULL DEFAULT NULL COMMENT '角色ID',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `sys_user_role_id_uindex`(`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户角色联系表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_user_role
-- ----------------------------
INSERT INTO `sys_user_role` VALUES (1, 1, 1);
INSERT INTO `sys_user_role` VALUES (2, 1, 2);
INSERT INTO `sys_user_role` VALUES (3, 2, 1);
INSERT INTO `sys_user_role` VALUES (4, 2, 3);
SET FOREIGN_KEY_CHECKS = 1;
这里有一点需要注意的地方就是,不同版本的SpringBoot对MySQL的驱动依赖的支持可能会有所区别,可以参考这里:SpringBoot中mysql的驱动依赖问题_mysql依赖-CSDN博客,建议使用本文章的SpringBoot版本。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.7.10version>
<relativePath/>
parent>
<groupId>com.ygygroupId>
<artifactId>demoartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>demoname>
<description>demodescription>
<properties>
<java.version>17java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>com.mysqlgroupId>
<artifactId>mysql-connector-jartifactId>
<scope>runtimescope>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.5.3version>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-generatorartifactId>
<version>3.5.3version>
dependency>
<dependency>
<groupId>org.apache.velocitygroupId>
<artifactId>velocity-engine-coreartifactId>
<version>2.3version>
dependency>
<dependency>
<groupId>com.github.xiaoymingroupId>
<artifactId>knife4j-openapi2-spring-boot-starterartifactId>
<version>4.3.0version>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
exclude>
excludes>
configuration>
plugin>
plugins>
build>
project>
简介 | MyBatis-Plus (baomidou.com)
server:
port: 8888
# 连接接数据库,这里就不用druid连接池了,使用SpringBoot默认的吧,简单例子没必要搞那么复杂
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
# mybatis-plus配置,在控制台打印SQL语句
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
在启动类中设置了Mapper目录下的包扫描,这样使用mybatis-plus代码生成器生成的Mapper层的接口就不需要再每个Mapper接口中自己手动添加@Mapper注解也可以使用Mapper层提供的方法了
这里需要先建立一个mapper目录
package com.ygy;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
// 开启扫描Mapper层
@MapperScan("com.ygy.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
快速开始 | MyBatis-Plus (baomidou.com)
在上面给出的maven坐标依赖中,我已经导入了mybatis-plus的坐标。具体看上面的的
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.5.3version>
dependency>
假设我使用mybatis-plus对sys_user表个进行代码开发。
这里需要手写Controller、domain、mapper/dao、Service、ServiceImpl层的代码。需要为每张表都手动建立对应的层级的内容。这个过程很繁琐,而且重复性很高。所以这里需要了解一下整合MP之后每一层的内容需要继承或者实现什么。
温馨提示:这里了解一下就可以了,这个建立各个项目的过程太过繁琐了,后面后代码生成器,这届直接根据表明生成对应的内容哦!!!
User.java
package com.ygy.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
*
* 用户表
*
*
* @author ygy
* @since 2023-11-05
*/
@Getter
@Setter
@TableName("sys_user")
@ApiModel(value = "User对象", description = "用户表")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("用户ID")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("年龄")
private Integer age;
@ApiModelProperty("性别(0,女,1,男)")
private Integer sex;
}
在mapper层或者Dao层,需要继承mybatis-plus内置的BaseMapper,然后什么都不用写,这一层就具有了对单表增删改查的所有功能了,如这里下面这里是对sys_user表具有了增删改查的功能了
UserMapper.java
package com.ygy.mapper;
import com.ygy.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
*
* 用户表 Mapper 接口
*
*
* @author ygy
* @since 2023-11-05
*/
public interface UserMapper extends BaseMapper<User> {
}
在Service层,需要继承mybatis-plus内置的IService,然后什么都不用写。这一层就具有了对单表增删改查的所有功能了,如这里下面这里是对sys_user表具有了增删改查的功能了
IUserService.java
package com.ygy.service;
import com.ygy.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* 用户表 服务类
*
*
* @author ygy
* @since 2023-11-05
*/
public interface IUserService extends IService<User> {
}
在UserServiceImpl中,需要继承mybatis-plus内置的ServiceImpl,同时是实现IUserService接口,然后什么都不用写。这一层就具有了对单表增删改查的所有功能了,如这里下面这里是对sys_user表具有了增删改查的功能了
package com.ygy.service.impl;
import com.ygy.domain.User;
import com.ygy.mapper.UserMapper;
import com.ygy.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* 用户表 服务实现类
*
*
* @author ygy
* @since 2023-11-05
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
Controller层直接调用MP内置的方法就行了,如这里调用MP内置的查询所有的方法list()
package com.ygy.controller;
import com.ygy.domain.User;
import com.ygy.service.IUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
*
* 用户表 前端控制器
*
*
* @author ygy
* @since 2023-11-05
*/
@Api(tags = "用户管理模块") // 这个是swagger的注解
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@GetMapping()
@ApiOperation("获取所有用户") // 这个也是swagger的注解
public List<User> getUserAll() {
List<User> list = userService.list();
return list;
}
}
简介 | MyBatis-Plus (baomidou.com),这里需要导入代码生成器的Maven坐标,具体看上面给出的Maven坐标中的
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-generatorartifactId>
<version>3.5.3version>
dependency>
<dependency>
<groupId>org.apache.velocitygroupId>
<artifactId>velocity-engine-coreartifactId>
<version>2.3version>
dependency>
这里是一个MP代码生成器类,然后通过右键运行,就可以生成domain、Mapper、Service、ServiceImpl层的代码了。当然这个也可以使用IDEA插件如mybatisX、easyCode等插件生产,我这里直接使用代码生成了,方便一点。只要数据库中有对应的表格就可以了,可以根据自己的需求配置。MpGenerator.java
package com.ygy;
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 MpGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai", "root", "root")
.globalConfig(builder -> {
builder.author("ygy") // 设置作者
.enableSwagger() // 开启 swagger 模式
// .fileOverride() // 覆盖已生成文件
.outputDir("D:\\javastudykeshanchu\\wodexiewenzhangjiluxiangmu\\Java-Module-Wen-Zhang-Ji-Lu-Xiang-Mu\\demo\\src\\main\\java"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.ygy") // 设置父包名
.entity("domain") // 这里默认生成实体类为放在entity目录下,我这里改成放在domain目录下了
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\javastudykeshanchu\\wodexiewenzhangjiluxiangmu\\Java-Module-Wen-Zhang-Ji-Lu-Xiang-Mu\\demo\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("sys_user") // 设置需要生成的表名
.addTablePrefix("sys_", "tb_") // 设置过滤表前缀
.entityBuilder()
.enableLombok()
.controllerBuilder()
.enableRestStyle();
})
.templateEngine(new VelocityTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
如下图所示,找到代码生成器的类,输入对应的表明(前提是数据库中有这个表明),然后
生成的结果如下所示:
上图中的controller层并没有生成一系列的代码,这个也可以配置,有兴趣的自己去了解一下就行了,这里只是生成一个controller对应的目录和对应的Controller类。
在UserController.java中写如下代码,进行测试,看看MP配置,以及是否能够正确连接MySQL了,截图后面有代码,可以直接复制
在resources目录的mapper目录中,也会生成一个对应表格的Mapper.xml的文件,这个是上面代码生成器的配置的mapper位置,具体看代码生成器的内容就知道了
package com.ygy.controller;
import com.ygy.domain.User;
import com.ygy.service.IUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
*
* 用户表 前端控制器
*
*
* @author ygy
* @since 2023-11-05
*/
@Api(tags = "用户管理模块") // 这个是swagger的注解
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@GetMapping()
@ApiOperation("获取所有用户") // 这个也是swagger的注解
public List<User> getUserAll() {
List<User> list = userService.list();
return list;
}
}
为了更好的测试代码,这里需要进行knif4j的配置,生成接口文档。方便测试,懒得安装其他软件或者插件,直接使用kinf4j测试方便,而且代码中关于swagger的注解,都是来自这个knif4j框架的。这里不一定必须是使用knif4j测试的,也可以使用postman或者Apifox测试,我推荐使用Apifox,这个IDEA中有一个插件,可以通过右键的形式然后Upload to Apifox,直接生成Controller层的接口测试用例。
Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j (xiaominfo.com),这个是官网,具体可以看官网,这里有两种配置方式,我选择通过代码的形式配置,代码往后看,有可以直接复制,如果想通过yml的形式配置的,可以看官网。这里还有一点需要注意的是,我没有配置拦截器,如果配置了拦截器或者过滤器,需要放行关于knif4j的接口和资源,具体怎么放行,看官网。代码在截图后面,这个截图只是告诉一声我代码放的位置
package com.ygy.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
/**
* knif4j配置
*/
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {
@Bean(value = "dockerBean")
public Docket dockerBean() {
//指定使用Swagger2规范
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
//描述字段支持Markdown语法
.description("# Knife4j RESTful APIs")
.title("这是接口文档测试")
.termsOfServiceUrl("http://localhost:8888/doc.html")
.contact("[email protected]")
.version("1.0")
.build())
//分组名称
.groupName("用户服务")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.ygy.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
因为配置了knif4j的缘故,这样就可以直接通过启动项目然后访问knif4j生成的接口文档进行接口测试了,如过这里启动那个日志中端口号为8888
这样我们就可以访问knif4j生成的接口文档了:http://localhost:8888/doc.html,然后再浏览器访问这个地址就可以了
我们去IDEA的运行控制台中看一下,Mybatis-plus给我们打印的SQL语句
到这里,SpringBoot + MySQL + Mybatis-plus的整合就完成了。剩下的就是熟悉Mybatis-plus,然后开发了。
Mybatis-plus除了使用内置的方法,我们也可以使用mybatis的方式开发项目,mybatis-plus是在mybatis的基础上增强而已,所以说并不影响我们使用mybatis的形式进行开发,也就是如在对应的xml文件写SQL语句,然后进行开发,也就是说,你可以把它当成mybatis使用。具体如下所示:
User.java
package com.ygy.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
*
* 用户表
*
*
* @author ygy
* @since 2023-11-05
*/
@Getter
@Setter
@TableName("sys_user")
@ApiModel(value = "User对象", description = "用户表")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("用户ID")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("年龄")
private Integer age;
@ApiModelProperty("性别(0,女,1,男)")
private Integer sex;
}
UserController.java
package com.ygy.controller;
import com.ygy.domain.User;
import com.ygy.service.IUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
*
* 用户表 前端控制器
*
*
* @author ygy
* @since 2023-11-05
*/
@Api(tags = "用户管理模块") // 这个是swagger的注解
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@GetMapping()
@ApiOperation("获取所有用户") // 这个也是swagger的注解
public List<User> getUserAll() {
List<User> list = userService.list();
return list;
}
@GetMapping("/getAllUserByXML")
@ApiOperation("通过在XML中写SQL实现数据库查询")
public List<User> getAllUserByXML() {
List<User> userList = userService.getAllUserByXML();
return userList;
}
}
IUserService.java
package com.ygy.service;
import com.ygy.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
*
* 用户表 服务类
*
*
* @author ygy
* @since 2023-11-05
*/
public interface IUserService extends IService<User> {
/**
* 通过在XML中写SQL实现数据库查询
* @return
*/
List<User> getAllUserByXML();
}
UserServiceImpl。java
package com.ygy.service.impl;
import com.ygy.domain.User;
import com.ygy.mapper.UserMapper;
import com.ygy.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* 用户表 服务实现类
*
*
* @author ygy
* @since 2023-11-05
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
@Autowired
private UserMapper userMapper;
/**
* 通过在XML中写SQL实现数据库查询
* @return
*/
@Override
public List<User> getAllUserByXML() {
List<User> userList = userMapper.getAllUserByXML();
return userList;
}
}
UserMapper.java
package com.ygy.mapper;
import com.ygy.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
*
* 用户表 Mapper 接口
*
*
* @author ygy
* @since 2023-11-05
*/
public interface UserMapper extends BaseMapper<User> {
/*@Select("select * from sys_user")
List getAllUserByXML();*/
List<User> getAllUserByXML();
}
UserMapper.xml
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ygy.mapper.UserMapper">
<select id="getAllUserByXML" resultType="com.ygy.domain.User">
select * from sys_user
select>
mapper>
然后访问knif4j生成的接口文档得到的结果如下所示
在IDEA控制台中打印的内容如下所示
如果不想要mybatis-plus打印的SQL日志,可以在application.yml中直接注释对应的mybatis-plus的配置就好了,这个建议在开发环境中还是开启吧,在打包的时候注释掉就好了
我打算写,利用mybatis-plus的分页插件在xml文件中联表查询实现分页(MySQL数据库),这个看时间,有空再写