• 【SpringBoot】SpringBoot整合MyBatis-Plus


    本文主要介绍 SpringBoot 整合 MyBatis-Plus 的方法,对其中容易出现的问题进行记录

    MyBatis-Plus 官网介绍文档地址:https://baomidou.com/

    一、基础准备

    1. 下载 MyBatisX 插件

    MyBatisX 能让我们更轻松的使用 MyBatis,如实现 Mapper 快速跳转 SQL 映射文件 等功能。

    下载方法: 在 File - Settings - Plugins 搜索 MyBatisX 安装即可

    在这里插入图片描述
    2. 创建数据库表并添加几条字段

    CREATE TABLE `user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `name` varchar(30) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      `email` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    附录:通过 Navicat 设置主键自动递增方法

    在这里插入图片描述

    二、整合 MyBatis-Plus

    1. 引入 mybatis-plus-boot-starter 依赖

      <dependency>
          <groupId>com.baomidougroupId>
          <artifactId>mybatis-plus-boot-starterartifactId>
          <version>3.4.1version>
      dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    依赖分析:mybatis-plus-boot-starter 帮助我们引入了 jdbc 包、MyBatis 包,因此这两个包都不用单独引入了。
    在这里插入图片描述

    自动配置分析

    • MybatisPlusAutoConfiguration 配置类,其与MybatisPlusProperties 配置项绑定,配置项绑定配置文件的 mybatis-plus
    • 自动配置好 sqlSessionFactory
    • 自动配置好 mapperLocations ,其有默认值,默认值为 classpath*:/mapper/**/*.xml。表示任意包的类路径下的 mapper 文件夹下的任意路径下的 xml 文件都解析为 SQL 映射文件。
    • 自动配置好 SqlSessionTemplate
    • 配置好 @Mapper 注释的接口自动扫描

    总结: Mybatis-Plus 将所有我们需要的一切都配置好了,我们只要开发就行了

    2. 配置数据源

    spring:
      datasource: # 配置数据库属性
        url: jdbc:mysql://localhost:3306/practice
        username: root
        password: 5201314love
        driver-class-name: com.mysql.jdbc.Driver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 在 SpringBoot 启动类中添加 @MapperScan 注释

    `@MapperScan 用于扫描 Mapper 接口所在文件夹,其实现批量扫描,省的每个接口都需要写 @Mapper 注释

    @SpringBootApplication
    @MapperScan("com.wanqing.admin.mapper") // 接口上上不需要标注 Mapper
    public class DemoAdminApplication {
        public static void main(String[] args) {
            SpringApplication.run(DemoAdminApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4. 准备 User 类

    @Data // Lombok 简化开发
    public class User {
       
        @TableField(exist = false)
        private String userName;
        @TableField(exist = false)
        private String password;
        private Long id;
        private String name;
        private Integer age;
        private String email;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    注: MyBatis-Plus 要求操作实体类的每条属性都要在数据库中存在,对数据库中不存在的临时属性,要通过 @TableField(exist = false) 注释。

    5. 编写 Mapper 接口

    接口需要继承MyBatis-Plus 提供的 BaseMapper 类, BaseMapper 类为我们提供了基础的增删改查功能 (crud) ,使得我们不需要书写 SQL 映射 xml 文件,不需要再编写 sql 语句,除非我们要实现的操作数据库功能特别复杂。

    public interface UserMapper extends BaseMapper<User> {
    }
    
    • 1
    • 2

    BaseMapper为我们提供了大部分的数据库操作方法,如下:在这里插入图片描述

    6. 测试是否整合成功

    在 SpringBoot 为我们提供的自动测试类中,添加如下方法,测试通过指定 id 查找用户信息:

        @Autowired // 自动注入 userMapper
        UserMapper userMapper;
        
        @Test
        void testUserMapper(){
            User user = userMapper.selectById(1L);
            log.info("用户信息: {}", user);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    使用 React 和 Django Channels 构建聊天应用程序
    2022年QT初体验以及未来趋势发展以及前景概要
    使用 Azure OpenAI 打造自己的 ChatGPT
    react获取input值
    Linux can 操作指令
    30分钟入门前端容器化
    前端自定义导出PPT
    【每日一题】528. 按权重随机选择
    刷题记录:牛客NC16856[NOI1999]钉子和小球
    Simulink 最基础教程(三)常用模块
  • 原文地址:https://blog.csdn.net/liuwanqing233333/article/details/127537358