SpringBoot3核心特性-数据访问

目录

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架

Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

前言

由于面试问到的比较多,而且做java开发这块还是需要真正掌握的。

现有笔记尚硅谷雷锋阳老师的:SpringBoot3全栈指南,是我目前见过的最好笔记了。

参考视频尚硅谷雷锋阳老师的:SpringBoot零基础教程,面试&加薪必会,视频是24小时31分钟的高质量教程。

参考代码:https://gitee.com/leifengyang/spring-boot-3

最经典的20个Spring Boot面试题,95%以上会被问到,不服来战

为了防止雷锋阳老师的日志查看不到,这里分类整理一下。下面文章不定时更新

SpringBoot3核心特性-快速入门

SpringBoot3核心特性-Web开发

SpringBoot3核心特性-数据访问

SpringBoot3核心特性-基础特性

SpringBoot3核心特性-核心原理

SpringBoot3场景整合

SpringBoot3响应式编程全套-Reactor核心

SpringBoot3响应式编程全套-Spring Webflux

SpringBoot3响应式编程全套-R2DBC

SpringBoot3响应式编程全套-Spring Security Reactive

整合SSM场景

SpringBoot 整合 Spring、SpringMVC、MyBatis 进行数据访问场景开发

一、创建SSM整合项目

xml 复制代码
<!-- 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>

二、配置数据源

java 复制代码
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

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

四、CRUD编写

● 编写Bean

● 编写Mapper

● 使用mybatisx插件,快速生成MapperXML

● 测试CRUD

五、自动配置原理

SSM整合总结:

  1. 导入 mybatis-spring-boot-starter
  2. 配置数据源信息
  3. 配置mybatis的mapper接口扫描与xml映射文件扫描
  4. 编写bean,mapper,生成xml,编写sql 进行crud。事务等操作依然和Spring中用法一样
  5. 效果:
    a. 所有sql写在xml中
    b. 所有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文件中配置的所有值,就是要开启的自动配置类,但是每个类可能有条件注解,基于条件注解判断哪个自动配置类生效了。

六、快速定位生效的配置

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

七、扩展:整合其他数据源

1、Druid 数据源

暂不支持 SpringBoot3

● 导入druid-starter

● 写配置

● 分析自动配置了哪些东西,怎么用

Druid官网:https://github.com/alibaba/druid

java 复制代码
#数据源基本配置
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

2、附录:示例数据库

sql 复制代码
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');

铁哥备注:评论截图


相关推荐
sanx187 分钟前
从零搭建体育比分网站完整步骤
java·开发语言
夏季疯8 分钟前
学习笔记:黑马程序员JavaWeb开发教程(2025.3.29)
java·笔记·学习
auspicious航19 分钟前
PostgreSQL 常用SQL操作命令
数据库·sql·postgresql
努力也学不会java23 分钟前
【HTTP】《HTTP 全原理解析:从请求到响应的奇妙之旅》
java·网络·网络协议·http
Ten peaches25 分钟前
苍穹外卖(订单状态定时处理、来单提醒和客户催单)
java·数据库·sql·springboot
caihuayuan535 分钟前
全文索引数据库Elasticsearch底层Lucene
java·大数据·vue.js·spring boot·课程设计
冼紫菜1 小时前
Spring 项目无法连接 MySQL:Nacos 配置误区排查与解决
java·spring boot·后端·mysql·docker·springcloud
gbase_lmax1 小时前
gbase8s数据库 tcp连接不同阶段的超时处理
网络·数据库·网络协议·tcp/ip
Aliano2171 小时前
Pinecone向量库 VS Redis
数据库·redis·缓存·pinecone向量库
爬呀爬的水滴1 小时前
02 mysql 管理(Windows版)
数据库·mysql