Java --- springboot3整合SSM

目录

一、整合SSM场景

二、自动配置原理 


一、整合SSM场景

 引入pom依赖


            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            3.0.0
        
        
            mysql
            mysql-connector-java
            8.0.17
        

数据库表:

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接口映射文件:




    

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文件中配置的所有值,就是要开启的自动配置类,但是每个类可能有条件注解,基于条件注解判断哪个自动配置类生效了。

可以通过springboot配置文件进行配置定位

#开启调试模式,详细打印开启了哪些自动配置
debug=true
# Positive(生效的自动配置)  Negative(不生效的自动配置)

你可能感兴趣的:(springboot3,mybatis,java,spring,boot)