目录
一、整合SSM场景
二、自动配置原理
一、整合SSM场景
引入pom依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>
数据库表:
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');
配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456
配置mybatis相关配置
#配置mybatis mybatis.mapper-locations=classpath:/mapper/*.xml #开启驼峰命名 mybatis.configuration.map-underscore-to-camel-case=true
实体类:
@Data public class TUser { private Long id; private String loginName; private String nickName; private String passwd; }
mapper接口:
@Mapper public interface UserMapper { TUser getUserById(@Param("id") Long id); }
mapper接口映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.cjc.boot3ssm.mapper.UserMapper"> <select id="getUserById" resultType="com.cjc.boot3ssm.bean.TUser"> select * from t_user where id=#{id} </select> </mapper>
service实现类:
@Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public TUser getUserById(Long id) { return userMapper.getUserById(id); } }
controller层:
@RestController public class UserController { @Autowired private UserService userService; @GetMapping("/getUserById/{id}") public TUser getUserById(@PathVariable("id") Long id){ return userService.getUserById(id); } }
在springboot启动类添加注解:
/** * @MapperScan 告诉mybatis扫描那个包下面的所有接口 */ @MapperScan(basePackages = "com.cjc.boot3ssm.mapper") @SpringBootApplication public class Boot3SsmApplication { public static void main(String[] args) { SpringApplication.run(Boot3SsmApplication.class, args); } }
二、自动配置原理
jdbc场景的自动配置
:1、
mybatis-spring-boot-starter
导入spring-boot-starter-jdbc
,jdbc是操作数据库的场景。2、
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
😊、支持事务
3、具有的底层能力:数据源、
JdbcTemplate
、事务
MyBatisAutoConfiguration
:配置了MyBatis的整合流程1、
mybatis-spring-boot-starter
导入mybatis-spring-boot-autoconfigure(mybatis的自动配置包)
2、
默认加载两个自动配置类:①、org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
②、org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
😊、必须在数据源配置好之后才配置
😊、给容器中
SqlSessionFactory
组件。创建和数据库的一次会话😊、给容器中
SqlSessionTemplate
组件。操作数据库3、MyBatis的所有配置绑定在
MybatisProperties
4、
每个Mapper接口的代理对象是怎么创建放到容器中。详见@MapperScan原理:😊、利用
@Import(MapperScannerRegistrar.class)
批量给容器中注册组件。解析指定的包路径里面的每一个类,为每一个Mapper接口类,创建Bean定义信息,注册到容器中。
如何分析哪个场景导入以后,开启了哪些自动配置类。
找:
classpath:/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件中配置的所有值,就是要开启的自动配置类,但是每个类可能有条件注解,基于条件注解判断哪个自动配置类生效了。文章来源:https://www.toymoban.com/news/detail-478721.html可以通过springboot配置文件进行配置定位文章来源地址https://www.toymoban.com/news/detail-478721.html
#开启调试模式,详细打印开启了哪些自动配置 debug=true # Positive(生效的自动配置) Negative(不生效的自动配置)
到了这里,关于Java --- springboot3整合SSM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!