SpringBoot整合mybatis-plus

文章目录

  • 环境准备
    • 数据库数据如下
    • maven坐标依赖如下所示
    • application.yml配置如下所示
    • 在启动类中设置Mapper包的扫描
    • 接下来就是代码中整合Mybatis-plus了
      • domain层
      • Mapper/Dao层
      • Service层
      • 在ServiceImpl中
      • Controller层就是写接口就行了
    • MP代码生成器
    • 测试一下能不能得到MySQL的数据
    • 接口测试
      • knif4j配置
    • 启动项目测试接口
    • 下一篇文章

环境准备

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整合mybatis-plus_第1张图片

maven坐标依赖如下所示

这里有一点需要注意的地方就是,不同版本的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>

application.yml配置如下所示

简介 | 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包的扫描

在启动类中设置了Mapper目录下的包扫描,这样使用mybatis-plus代码生成器生成的Mapper层的接口就不需要再每个Mapper接口中自己手动添加@Mapper注解也可以使用Mapper层提供的方法了
这里需要先建立一个mapper目录
SpringBoot整合mybatis-plus_第2张图片
SpringBoot整合mybatis-plus_第3张图片

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了

快速开始 | 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之后每一层的内容需要继承或者实现什么。

温馨提示:这里了解一下就可以了,这个建立各个项目的过程太过繁琐了,后面后代码生成器,这届直接根据表明生成对应的内容哦!!!

目录结构如下所示:
SpringBoot整合mybatis-plus_第4张图片

domain层

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层

在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层

在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> { }

在ServiceImpl中

在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层就是写接口就行了

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; } }

MP代码生成器

简介 | 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();
    }
}

如下图所示,找到代码生成器的类,输入对应的表明(前提是数据库中有这个表明),然后
SpringBoot整合mybatis-plus_第5张图片
生成的结果如下所示:
SpringBoot整合mybatis-plus_第6张图片
上图中的controller层并没有生成一系列的代码,这个也可以配置,有兴趣的自己去了解一下就行了,这里只是生成一个controller对应的目录和对应的Controller类。

测试一下能不能得到MySQL的数据

在UserController.java中写如下代码,进行测试,看看MP配置,以及是否能够正确连接MySQL了,截图后面有代码,可以直接复制

SpringBoot整合mybatis-plus_第7张图片
在resources目录的mapper目录中,也会生成一个对应表格的Mapper.xml的文件,这个是上面代码生成器的配置的mapper位置,具体看代码生成器的内容就知道了
SpringBoot整合mybatis-plus_第8张图片

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层的接口测试用例。

knif4j配置

Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j (xiaominfo.com),这个是官网,具体可以看官网,这里有两种配置方式,我选择通过代码的形式配置,代码往后看,有可以直接复制,如果想通过yml的形式配置的,可以看官网。这里还有一点需要注意的是,我没有配置拦截器,如果配置了拦截器或者过滤器,需要放行关于knif4j的接口和资源,具体怎么放行,看官网。代码在截图后面,这个截图只是告诉一声我代码放的位置

SpringBoot整合mybatis-plus_第9张图片
Knife4jConfiguration.java

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
SpringBoot整合mybatis-plus_第10张图片
这样我们就可以访问knif4j生成的接口文档了:http://localhost:8888/doc.html,然后再浏览器访问这个地址就可以了
SpringBoot整合mybatis-plus_第11张图片
SpringBoot整合mybatis-plus_第12张图片
我们去IDEA的运行控制台中看一下,Mybatis-plus给我们打印的SQL语句
SpringBoot整合mybatis-plus_第13张图片
到这里,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生成的接口文档得到的结果如下所示
SpringBoot整合mybatis-plus_第14张图片
在IDEA控制台中打印的内容如下所示
SpringBoot整合mybatis-plus_第15张图片
如果不想要mybatis-plus打印的SQL日志,可以在application.yml中直接注释对应的mybatis-plus的配置就好了,这个建议在开发环境中还是开启吧,在打包的时候注释掉就好了
在这里插入图片描述

下一篇文章

我打算写,利用mybatis-plus的分页插件在xml文件中联表查询实现分页(MySQL数据库),这个看时间,有空再写

你可能感兴趣的:(springboot,mysql,spring,boot,mybatis,后端)