SpringBoot3—核心特性:数据访问

SpringBoot 整合 SpringSpringMVCMyBatis 进行数据访问场景开发

一、创建SSM整合项目

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

二、配置数据源

application.propertiessrc/main/resources下)中配置数据源

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文件即可 

三、配置MyBatis

#指定mapper映射文件位置
mybatis.mapper-locations=classpath:/mapper/*.xml
#参数项调整
mybatis.configuration.map-underscore-to-camel-case=true

四、CRUD编写

  1. 编写Bean
  2. 编写Mapper
  3. 使用mybatisx插件,快速生成MapperXML
  4. 测试CRUD

五、自动配置原理

(1)SSM整合总结

  1. 导入 mybatis-spring-boot-starter
  2. 配置数据源信息
  3. 配置mybatis的mapper接口扫描xml映射文件扫描
  4. 编写bean,mapper,生成xml,编写sql 进行crud。事务等操作依然和Spring中用法一样
  5. 效果
    1. 所有sql写在xml中
    2. 所有mybatis配置写在application.properties下面

(2)JDBC场景的自动配置

  1. mybatis-spring-boot-starter导入 spring-boot-starter-jdbcjdbc操作数据库的场景
  2. Jdbc场景的几个自动配置
    1. org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
      1. 数据源的自动配置
      2. 所有和数据源有关的配置都绑定在DataSourceProperties
      3. 默认使用 HikariDataSource
    2. org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
      1. 给容器中放了JdbcTemplate操作数据库
    3. org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
    4. org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration
      1. 基于XA二阶提交协议的分布式事务数据源
    5. org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
      1. 支持事务
  3. 具有的底层能力数据源JdbcTemplate事务

(3)MyBatisAutoConfiguration:配置了MyBatis的整合流程

  1. mybatis-spring-boot-starter导入 mybatis-spring-boot-autoconfiguremybatis的自动配置包
  2. 默认加载两个自动配置类
    1. org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
    2. org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
      1. 必须在数据源配置好之后才配置
      2. 给容器中SqlSessionFactory组件。创建和数据库的一次会话
      3. 给容器中SqlSessionTemplate组件。操作数据库
  3. MyBatis的所有配置绑定在MybatisProperties
  4. 每个Mapper接口代理对象是怎么创建放到容器中。详见@MapperScan原理:
    1. 利用@Import(MapperScannerRegistrar.class)批量给容器中注册组件。解析指定的包路径里面的每一个类,为每一个Mapper接口类,创建Bean定义信息,注册到容器中
  5. 如何分析哪个场景导入以后,开启了哪些自动配置类:找classpath:/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中配置的所有值,就是要开启的自动配置类,但是每个类可能有条件注解,基于条件注解判断哪个自动配置类生效了 

六、快速定位生效的配置

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

七、扩展:整合Druid数据源

  1. 导入druid-starter
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>2.1.1</version>
    </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.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
  3. 分析自动配置了哪些东西,怎么用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值