尚硅谷springboot3核心特性-数据访问(三)
整合SSM
SpringBoot整合
spring
、SpringMVC
、Mybatis
进行数据访问场景开发
创建SSM整合项目
1 | <dependency> |
配置数据源
1 | com.mysql.cj.jdbc.Driver = |
配置MyBatis
1 | # 指定mapper.xml映射文件位置 |
CRUD编写
- 编写Bean
- 编写Mapper
- 使用
mybatisx
插件,快速生成MapperXML - 测试CRUD
自动配置原理
SSM整合总结:
导入
mybatis-spring-boot-starter
配置数据源信息
配置myabtis的 mapper接口扫描 和 xml映射文件扫描
编写 bean、mapper,生成xml,编写sql,进行crud。事务等操作依然和Speing中用法一样
效果:
- 所有sql写在xml中
- 所有mybatis配置写在
application.properties
里面
JDBC场景的自动配置:
mybatis-spring-boot-starter
导入spring-boot-starter-jdbc
,jdbc是操作数据库的场景- JDBC场景的几个自动配置
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
- 数据源的自动配置
- 所有额数据源有关的配置都绑定在
DataSourceProperties
- 默认使用
HikariDataSource
(其他几个数据源需要指定条件达成才能生效)
- org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration
- 给容器中放了
JdbcClient
操作数据库(对JdbcTemplate
进行了二次封装)
- 给容器中放了
- 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
- 支持事务
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
- 具有的底层能力:数据源,
JdbcTemplate
,JdbcClient
,事务
MybatisAutoConfiguration
:配置了mybatis的整合流程mybatis-spring-boot-starter
导入mybatis-spring-boot-autoconfigure
(mybatis的自动配置包)- 默认加载两个自动配置类:
- org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
- mybatis语言驱动配置
- org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
- 必须在数据源配置号之后才配置
- 给容器中添加
SqlSessionFactory
组件。创建和数据库的一次会话 - 给容器中添加
SqlSessionTemplate
组件。操作数据库
- org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
- Mybatis的所有配置绑定在
MybatisProperties
- 每个Mapper接口的代理对象是怎么创建放到容器中。详见
@MapperScan
原理- 利用
@Import(MapperScannerRegistrar.class)
批量给容器中注册组件,解析指定的包路径里面的每一个类,为每一个Mapper接口类,创建Bean定义信息,注册到容器中。
- 利用
如何分析某个场景导入以后,开启了哪些自动配置类。
找:META-INF\spring\org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件中配置的所有值,就是要开启的自动配置类,但是每个类可能有条件注解,基于条件注解判断哪个自动配置类生效了。
快速定位生效的配置
1 | #开启调试模式,详细打印开启了哪些自动配置 |
扩展:整合其他数据源
Druid数据源
- 导入
druid-starter
- 写配置
- 分析自动配置了哪些东西,怎么用
Druid官网:alibaba/druid
1 | #数据源基本配置 |
附录:示例数据库
1 | CREATE TABLE `t_user` |