SSM 手动整合演练涵盖从引入 mybatis-spring-boot-starter 依赖、数据源与 MyBatis 配置、CRUD 编写,到 SpringBoot 自动配置原理解析、自动配置生效类调试,以及扩展第三方数据源(如 Druid)等全流程,帮助快速搭建稳定的 Spring + SpringMVC + MyBatis 数据访问架构。
整合SSM场景
SpringBoot 整合
Spring
、SpringMVC
、MyBatis
进行数据访问场景开发
1. 创建SSM整合项目
1 | <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> |
2. 配置数据源
1 | spring.datasource.url=jdbc:mysql://192.168.200.100:3306/demo |
安装MyBatisX 插件,帮我们生成Mapper接口的xml文件即可
3. 配置MyBatis
1 | #指定mapper映射文件位置 |
4. CRUD编写
- 编写Bean
- 编写Mapper
- 使用
mybatisx
插件,快速生成MapperXML - 测试CRUD
5. 自动配置原理
SSM整合总结:
- 导入
mybatis-spring-boot-starter
- 配置数据源信息
- 配置mybatis的
mapper接口扫描
与xml映射文件扫描
- 编写bean,mapper,生成xml,编写sql 进行crud。
- 事务等操作依然和Spring中用法一样
- 效果:
- 所有sql写在xml中
- 所有
mybatis配置
写在application.properties
下面
jdbc场景的自动配置
:mybatis-spring-boot-starter
导入spring-boot-starter-jdbc
Jdbc
场景的几个自动配置org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
- 数据源的自动配置 -
所有和数据源有关的配置都绑定在
DataSourceProperties
- 默认使用HikariDataSource
- 数据源的自动配置 -
所有和数据源有关的配置都绑定在
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
- 给容器中放了
JdbcTemplate
操作数据库
- 给容器中放了
org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration
- 基于XA二阶提交协议的分布式事务数据源
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
- 支持事务
具有的底层能力:数据源、
JdbcTemplate
、事务
MyBatisAutoConfiguration
:配置了MyBatis的整合流程mybatis-spring-boot-starter
导入mybatis-spring-boot-autoconfigure(mybatis的自动配置包)
,默认加载两个自动配置类:
org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
- 必须在数据源配置好之后才配置
- 给容器中
SqlSessionFactory
组件。创建和数据库的一次会话 - 给容器中
SqlSessionTemplate
组件。操作数据库
- 给容器中
- 必须在数据源配置好之后才配置
MyBatis的所有配置绑定在
MybatisProperties
每个Mapper接口的代理对象是怎么创建放到容器中。详见@MapperScan原理:
- 利用
@Import(MapperScannerRegistrar.class)
批量给容器中注册组件。解析指定的包路径里面的每一个类,为每一个Mapper接口类,创建Bean定义信息,注册到容器中。
- 利用
如何分析哪个场景导入以后,开启了哪些自动配置类。
找:
classpath:/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件中配置的所有值,就是要开启的自动配置类,但是每个类可能有条件注解,基于条件注解判断哪个自动配置类生效了。
6. 快速定位生效的配置
1 | #开启调试模式,详细打印开启了哪些自动配置 |
7. 扩展:整合其他数据源
1. Druid 数据源
暂不支持 SpringBoot3
- 导入
druid-starter
- 写配置
- 分析自动配置了哪些东西,怎么用
Druid官网:https://github.com/alibaba/druid
1 | #数据源基本配置 |
附录:示例数据库
1 | CREATE TABLE `t_user` |