当前位置:   article > 正文

SpringBoot3-数据访问

SpringBoot3-数据访问

整合SSM场景

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

1. 创建SSM整合项目

  1. <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
  2. <dependency>
  3. <groupId>org.mybatis.spring.boot</groupId>
  4. <artifactId>mybatis-spring-boot-starter</artifactId>
  5. <version>3.0.1</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. <scope>runtime</scope>
  11. </dependency>

三大框架整合操作数据库最先要配置的是数据库。 

2. 配置数据源

  1. spring.datasource.url=jdbc:mysql://192.168.200.100:3306/demo
  2. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  3. spring.datasource.username=root
  4. spring.datasource.password=123456
  5. spring.datasource.type=com.zaxxer.hikari.HikariDataSource

安装MyBatisX 插件,帮我们生成Mapper接口的xml文件即可

3. 配置MyBatis

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

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. 效果:
    1. 所有sql写在xml中
    2. 所有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. 快速定位生效的配置

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

7. 扩展:整合其他数据源

1. Druid 数据源

暂不支持 SpringBoot3

  • 导入druid-starter
  • 写配置
  • 分析自动配置了哪些东西,怎么用

Druid官网:GitHub - alibaba/druid: 阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池

  1. #数据源基本配置
  2. spring.datasource.url=jdbc:mysql://192.168.200.100:3306/demo
  3. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  4. spring.datasource.username=root
  5. spring.datasource.password=123456
  6. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  7. # 配置StatFilter监控
  8. spring.datasource.druid.filter.stat.enabled=true
  9. spring.datasource.druid.filter.stat.db-type=mysql
  10. spring.datasource.druid.filter.stat.log-slow-sql=true
  11. spring.datasource.druid.filter.stat.slow-sql-millis=2000
  12. # 配置WallFilter防火墙
  13. spring.datasource.druid.filter.wall.enabled=true
  14. spring.datasource.druid.filter.wall.db-type=mysql
  15. spring.datasource.druid.filter.wall.config.delete-allow=false
  16. spring.datasource.druid.filter.wall.config.drop-table-allow=false
  17. # 配置监控页,内置监控页面的首页是 /druid/index.html
  18. spring.datasource.druid.stat-view-servlet.enabled=true
  19. spring.datasource.druid.stat-view-servlet.login-username=admin
  20. spring.datasource.druid.stat-view-servlet.login-password=admin
  21. spring.datasource.druid.stat-view-servlet.allow=*
  22. # 其他 Filter 配置不再演示
  23. # 目前为以下 Filter 提供了配置支持,请参考文档或者根据IDE提示(spring.datasource.druid.filter.*)进行配置。
  24. # StatFilter
  25. # WallFilter
  26. # ConfigFilter
  27. # EncodingConvertFilter
  28. # Slf4jLogFilter
  29. # Log4jFilter
  30. # Log4j2Filter
  31. # CommonsLogFilter

附录:示例数据库

  1. CREATE TABLE `t_user`
  2. (
  3. `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
  4. `login_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户名称' COLLATE 'utf8_general_ci',
  5. `nick_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户昵称' COLLATE 'utf8_general_ci',
  6. `passwd` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户密码' COLLATE 'utf8_general_ci',
  7. PRIMARY KEY (`id`)
  8. );
  9. insert into t_user(login_name, nick_name, passwd) VALUES ('zhangsan','张三','123456');
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/172977
推荐阅读
相关标签
  

闽ICP备14008679号