撰于 阅读 33

Springboot 整合持久层框架 Mybatis Plus

1. 什么是 MyBatis Plus?

MyBatis Plus (简称 MP) 是一款持久层框架,说白话就是一款操作数据库的框架。它是一个 MyBatis 的增强工具,就像 iPhone手机一般都有个 plus 版本一样,它在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis Plus 的愿景是成为 MyBatis 最好的搭档,效率翻倍。

2. MyBatis Plus 的优势

  • 快速开发:MyBatis Plus 提供了一系列的便捷功能,如自动生成 SQL 语句、通用 Mapper 等,使数据库操作更加高效,能够节省开发时间。
  • 更少的配置: Spring Boot 已经为我们提供了很多默认的配置,整合 MyBatis Plus 时只需少量的配置,减少了繁琐的配置步骤。
  • 内置分页插件:MyBatis Plus 内置了分页插件,无需额外的代码,就可以轻松实现分页查询。
  • 更好的支持: MyBatis Plus 在社区中有较广泛的使用,拥有活跃的维护者和开发者,您可以轻松找到解决方案和文档。

3. 整合

3.1 添加依赖

在父项目的 pom.xml 文件中,声明 MP 的依赖版本号:

    <!-- 版本号统一管理 -->
    <properties>
        // 省略...
        <mybatis-plus.version>3.5.2</mybatis-plus.version>
    </properties>
    
        <!-- 统一依赖管理 -->
    <dependencyManagement>
        <dependencies>
            // 省略...

            <!-- Mybatis Plus -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

然后,在具体的业务模块的 pom.xml 文件中,引入 MP 和 MySQL 依赖:

        <!-- Mybatis Plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        
        <!-- mysql 依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

3.2 配置文件

编辑 applicaiton-dev.yml 文件,添加数据库链接相关的配置,包含连接池的配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/weblog?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
    username: root
    password: 123456
    hikari:
      minimum-idle: 5
      maximum-pool-size: 20
      auto-commit: true
      idle-timeout: 30000
      pool-name: Weblog-HikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1

数据库链接池这块,我们使用的 Spring Boot 默认的 HikariCP,它是一个高性能的连接池实现 , 同时,它号称是速度最快的连接池:

  • spring.datasource.hikari.minimum-idle: Hikari连接池中最小空闲连接数。
  • spring.datasource.hikari.maximum-pool-size: Hikari连接池中允许的最大连接数。
  • spring.datasource.hikari.auto-commit: 连接是否自动提交事务。
  • spring.datasource.hikari.idle-timeout: 连接在连接池中闲置的最长时间,超过这个时间会被释放。
  • spring.datasource.hikari.pool-name: 连接池的名字。
  • spring.datasource.hikari.max-lifetime: 连接在连接池中的最大存活时间,超过这个时间会被强制关闭。
  • spring.datasource.hikari.connection-timeout: 获取连接的超时时间。
  • spring.datasource.hikari.connection-test-query: 用于测试连接是否可用的SQL查询,这里使用的是SELECT 1,表示执行这个查询来测试连接。

然后,在 common 模块中的 config 包下,新建一个 MybatisPlusConfig 配置文件,代码如下:

package com.windblog.common.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.windblog.common.domain.mapper")
public class MybatisPlusConfig {
}

@MapperScan : 扫描 MP 的 mapper 接口存放位置。

3.3 映射xml

如果自动以sql不采用注解的卸载mapper的话,而是映射到resource下的xml文件,需要在项目的yml配置中新增xml的路径

mybatis-plus:
    mapper-locations: classpath:mapper/*.xml

4. 结语

至此,整合 Mabatis Plus 持久层框架就成功了,有了持久层框架,能够帮助开发人员更方便地进行数据库操作。同时,MyBatis Plus 的强大功能和 Spring Boot 的自动化配置使得整合变得非常简单,节省了开发人员的时间和精力。