*1. 添加依赖
mybatis和·mysql依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency>
*2. 配置数据源
spring.datasource.url=jdbc:mysql://192.168.200.100:3306/demo spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=123456
#数据源类型:
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
安装MyBatisX 插件,帮我们生成Mapper接口的xml文件即可
*3. 配置MyBatis的配置
#指定mapper映射文件位置:
**mybatis.mapper-locations****=classpath:/mapper/\*.xml**
#参数项调整,开启驼峰命名法:
mybatis.configuration.map-underscore-to-camel-case=true
配合@MapperScan(basePackage="mapper包的路径名")完成对持久化层操作。
4. CRUD编写
●编写Bean
●编写Mapper
●使用mybatisx插件,快速生成MapperXML
●测试CRUD
------------------------------
5. 自动配置原理
SSM整合总结:
1.导入 mybatis-spring-boot-starter。
2.配置数据源信息。
3.配置mybatis的mapper接口扫描与xml映射文件扫描。
4.编写bean,mapper,生成xml,编写sql 进行crud。事务等操作依然和Spring中用法一样。
5.效果:
-
-
所有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.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. 快速定位生效 debug**=true**
#开启调试模式,详细打印开启了哪些自动配置
debug=true
#Positive(生效的自动配置) Negative(不生效的自动配置)
7. 扩展:整合其他数据源
1.Druid 数据源
暂不支持 SpringBoot3
-
导入druid-starter
-
写配置
-
分析自动配置了哪些东西,怎么用
#数据源基本配置
spring.datasource.url=jdbc:mysql://192.168.200.100:3306/demo spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=123456 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 配置StatFilter监控
spring.datasource.druid.filter.stat.enabled=true spring.datasource.druid.filter.stat.db-type=mysql spring.datasource.druid.filter.stat.log-slow-sql=true spring.datasource.druid.filter.stat.slow-sql-millis=2000
# 配置WallFilter防火墙
spring.datasource.druid.filter.wall.enabled=true spring.datasource.druid.filter.wall.db-type=mysql spring.datasource.druid.filter.wall.config.delete-allow=false spring.datasource.druid.filter.wall.config.drop-table-allow=false
# 配置监控页,内置监控页面的首页是 /druid/index.html
spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin spring.datasource.druid.stat-view-servlet.allow=*
# 其他 Filter 配置不再演示
# 目前为以下 Filter 提供了配置支持,请参考文档或者根据IDE提示(spring.datasource.druid.filter.*)进行配置。
# StatFilter
# WallFilter
# ConfigFilter
# EncodingConvertFilter
# Slf4jLogFilter
# Log4jFilter
# Log4j2Filter
# CommonsLogFilter
附录:示例数据库
CREATE TABLE `t_user` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `login_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户名称' COLLATE 'utf8_general_ci', `nick_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户昵称' COLLATE 'utf8_general_ci', `passwd` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户密码' COLLATE 'utf8_general_ci', PRIMARY KEY (`id`) ); insert into t_user(login_name, nick_name, passwd) VALUES ('zhangsan','张三','123456');