1.整合SSM场景
SpringBoot整合Spring、SpringMVC、MyBatis 进行数据访问场景开发
1.0 创建数据相关的MYSQL
create table `ssm`(`id` int(20) not null auto_increment comment '编号',`login_name` varchar(200) null default null comment '用户名称' collate 'utf8_bin',`nick_name` varchar(200) null default null comment '用户昵称' collate 'utf8_bin',`password` varchar(200) null default null comment '用户密码' collate 'utf8_bin',primary key (`id`)
);insert into ssm(login_name, nick_name, password)
VALUES ('zhangsan','张三','123456');
1.1 创建SSM整合项目
依赖
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.3</version><scope>test</scope></dependency></dependencies>
1.2 配置数据源
#1.配置数据源信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=1234
安装MybatisX插件,帮我们生成Mapper接口的xml文件。ALT+回车
1.3 配置mybatis
@SpringBootApplication
//告诉mybatis扫描哪个包下的所有接口
//mybatis.mapper-locations 告诉MyBatis,每个接口的xml文件都在哪里 在配置properties中
@MapperScan(basePackages = "com.example.boot3ssm.mapper")# 配置整合Mybatis
mybatis.mapper-locations=classpath:/mapper/*.xml
#驼峰命名规则
mybatis.configuration.map-underscore-to-camel-case=true
1.4 编写CRUD
编写controller service mapper crud
参考如下
1.5 自动配置原理
SSM整合总结:
1.导入mybatis-spring-boot-starter
2.配置数据源信息
3.配置mybatis的 mapper接口扫描
与xml映射文件扫描
4.编写bean,mapper,生成xml,编写sql进行crud
5.效果:
- 所有sql写在xml中
- 所有 mybatis配置写在application.properties下面
1.5.1 DataSourceAutoconfiguration
: 配置了数据源等基本信息
mybatis-spring-boot-starter
导入spring-boot-starter-jdbc
,jdbc是操作数据库的场景jdbc
场景的自动配置- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
- 数据源的自动配置
- 所有和数据源有关的配置都绑定在
DatasourceProperties
- 默认使用
HikariDataSource
- org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration
- 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、事务
1.5.2 MyBatisAutoConfiguration
:配置了MyBatis的整合流程
mybatis-spring-boot-starter
导入mybatis-spring-boot-autoconfigure
(mybatis的自动配
置包)- 默认加载两个自动类:
- org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
- org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
MybatisAutoConfiguration
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties({MybatisProperties.class})
@AutoConfigureAfter({DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class})
- 必须在数据源配置好之后才配置
- 给容器中
sqlsessionFactory
组件,创建和数据库的一次会话 - 给容器中 SqlsessionTemplate 组件。操作数据库
- MyBatis的所有配置绑定在 MybatisProperties
- 每个Mapper接口的代理对象是怎么创建放到容器中。详见**@MapperScan**原理:
- 利用
@Import(MapperScannerRegistrar.class)
批量给容器中注册组件。解析指定的包路径里面的每一个类,为每一个Mapper接口类,创建Bean定义信息,注册到容器中。
- 利用