SpringBoot - Dao 整合Mybatis
本节学习SpringBoot整合Mybatis框架以及Mybatis模块starter的配置。
1. Mybatis简介
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
什么是Mybatis - Mybatis官网
2. 导入Mybatis模块starter
Mybatis官方提供了第三方模块启动器,可以通过SpringBoot的自动配置直接使用。
2.1 导入模块starter
pom.xml
:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
2.1.X适用于SpringBoot2.1-2.4版本,2.2.X适用于SpringBoot2.5+版本。
2.2 分析导入的依赖
分析导入Mybatis模块starter后引入的依赖:
org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4
│
├── org.springframework.boot:spring-boot-starter:2.4.5 (父启动器)
│
├── org.springframework.boot:spring-boot-starter-jdbc:2.4.5 (JDBC模块启动器)
│ │
│ ├── org.springframework.boot:spring-boot-starter:2.4.5 (父启动器)
│ │
│ ├── com.zaxxer:HikariCP:3.4.5 (Hikari数据源(连接池))
│ │
│ └── org.springframework:spring-jdbc:5.3.6 (SpringJDBC模块)
│
├── org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.4 (Mybatis自动配置包)
│
├── org.mybatis:mybatis:3.5.6 (Mybatis)
│
└── org.mybatis:mybatis-spring:2.0.6 (Mybatis与Spring整合包)
导入Mybatis模块starter后,为我们引入了SpringJDBC模块及其启动器,Mybatis自动配置包,Mybatis和Mybatis与Spring整合包。
同样未提供数据库驱动依赖,需要我们自己手动导入。
3. 分析自动配置原理
学习新的starter,就不得不牵扯到其自动配置原理。
来到Mybatis自动配置包org.mybatis.spring.boot.autoconfigure
下,简单分析重要的自动配置类:
名称 | 功能 |
---|---|
MybatisAutoConfiguration |
Mybatis自动配置类 |
MybatisProperties |
Mybatis配置参数类 |
传统Mybatis配置需要我们自己手动配置SqlSessionFactory
、SqlSession
和Mapper
,现在Mybatis的自动配置类已经帮我们配置好了这些组件:
// org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
// 配置类
@org.springframework.context.annotation.Configuration
@ConditionalOnClass({
SqlSessionFactory.class, SqlSessionFactoryBean.class }