SpringBoot3核心特性-数据访问

news2024/9/21 16:30:33

目录

  • 传送门
  • 前言
  • 整合SSM场景
  • 一、创建SSM整合项目
  • 二、配置数据源
  • 三、配置MyBatis
  • 四、CRUD编写
  • 五、自动配置原理
  • 六、快速定位生效的配置
  • 七、扩展:整合其他数据源
    • 1、Druid 数据源
    • 2、附录:示例数据库

传送门

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整合项目

<!-- 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>

二、配置数据源

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编写

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

六、快速定位生效的配置

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

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

1、Druid 数据源

暂不支持 SpringBoot3
● 导入druid-starter
● 写配置
● 分析自动配置了哪些东西,怎么用
Druid官网:https://github.com/alibaba/druid

#数据源基本配置
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、附录:示例数据库

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');

铁哥备注:评论截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2097628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过工业交换机增加网络带宽?

在现代工业环境中&#xff0c;网络的稳定性和带宽的充足性显得尤为重要。随着设备的增加和数据流量的增长&#xff0c;单一的网络带宽往往难以满足企业对于高效数据传输的需求。因此&#xff0c;如何通过工业交换机来增加网络带宽&#xff0c;成为了技术人员关注的重点。 首先&…

新手使用住宅代理有哪些常见误区?

作为新手&#xff0c;在使用住宅代理时往往会陷入一些常见误区&#xff0c;这些误区不仅可能影响到使用效果&#xff0c;甚至可能会带来安全风险。今天将与大家探讨新手在使用住宅代理时可能会遇到的几个关键误区&#xff0c;并提供相应的解决方案。误区一&#xff1a;盲目追求…

「合诚」× 企企通SRM项目启动,高分子新材料和健康产业高新技术企业将奔赴数智采购新征程

为拉通产业链上下游&#xff0c;优化提升整体效率&#xff0c;帮助企业变革采购管理方式&#xff0c;推动化工新材料行业高质量发展&#xff0c;近日&#xff0c;合诚技术股份有限公司&#xff08;以下简称“合诚”&#xff09;携手企企通成功举办了SRM项目启动会&#xff0c;双…

微电网能量管理系统在企业光伏电站的应用

发展背景&#xff1a; 在全球不可再生能源稀缺的背景下各个国家都在大力发展可再生能源&#xff0c;因此光伏行业应需而生且迅速发展了起来。能源转型中的光伏储能是指将光伏发电与储能技术相结合&#xff0c;以解决太阳能发电的间歇性和不稳定性问题&#xff0c;实现更稳定、…

怎么使用PPT倒计时插件?这款在线PPT工具,堪称办公必备!

在进行ppt演示时&#xff0c;为了更好地把控演示时间&#xff0c;有些人会在演示的同时设置一个倒计时&#xff0c;但Office的ppt本身没有提供倒计时功能&#xff0c;想要实现这一目的&#xff0c;就得在现有的基础上安装倒计时插件。 ppt倒计时插件 目前可用的免费ppt倒计时…

如何判断全面预算和EPM软件架构是否符合技术规范?

以全面预算管理软件为代表的企业绩效管理EPM软件&#xff0c;已经日益成为企业数字化智慧化管理的核心软件系统。国际企业采用了30多年的EPM系统&#xff0c;也逐渐被国内企业所熟识。全面预算管理软件的作用不仅仅是预算编报&#xff0c;还是整个企业实现高效经营分析和快速决…

基于PCL实现RGB-D图像转换为点云

原理: RGB 和 depth图已经对齐了,也就是 depth 图中某个位置的深度值在 RGB图中同样的位置处就是它对应的颜色。假设相机内参矩阵为: 则RGB-D图像转换为点云代码如下: for (int m = 0; m < depth.rows; m++)for (int n = 0

英飞凌HSM内核开发-CSM模块配置

CsmGeneral CsmJob CsmKey CsmQueue CsmPrimitive

最新保姆级教程

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布&#xff0c;最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型&#xff1a;Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus&#xff0c;每个模型都展现了卓越的性能与特色。其中&a…

Python+Selenium 通过添加cookies或token解决网页上验证码登录问题

cookie或token可以保存登录信息&#xff0c;当我们拿到cookie后&#xff0c;可以通过向浏览器发送cookie中记录的数据&#xff0c;直接变成登录状态&#xff0c;不需要再登录。 下面举个栗子 1、先把正常的登录方式码一下&#xff1a; browser webdriver.Chrome(executable_…

颈动脉斑块的MR图像分割

颈动脉斑块的MR图像分割是一个复杂的图像处理过程&#xff0c;它结合了医学影像学和计算机视觉技术。以下是一个基于一般流程的描述&#xff0c;包括可能的步骤和示例代码&#xff08;使用Python和OpenCV库&#xff09;&#xff0c;但请注意&#xff0c;实际应用中可能需要针对…

心脑血管科曹启富主任医师:血压高降不下来?找准这三个方向真的降下来了

高血压&#xff0c;这一影响超过3亿国人健康的慢性病&#xff0c;常常让人倍感困扰。尽管在医生的指导下科学用药&#xff0c;并通过调整饮食和生活习惯&#xff0c;大多数患者都能将血压控制在适宜水平&#xff0c;但在日常生活中&#xff0c;我们仍可能遇到血压突然升高的情况…

NFV架构

1&#xff09;NFV的背景 来自IT界的启示&#xff0c;给网络产业带来了网络架构和设备架构两个层面的思考。网络架构层面引入对SDN控制器的思考&#xff0c;设备架构层面引入对设备部署形态的思考&#xff08;NFV&#xff09;。 网络功能虚拟化被称为NFV&#xff08;Network Fu…

9月新机首发:骁龙芯片+超大电池,游戏玩家的终极选择

随着秋风送爽的9月到来&#xff0c;智能手机和电子设备市场也迎来了新一轮的热潮。8月份的新机发布热潮刚刚退去&#xff0c;9月份的新机已经迫不及待地揭开了神秘的面纱。在众多备受期待的产品中&#xff0c;红魔品牌抢先官宣&#xff0c;两款全新的游戏平板将在9月5日正式亮相…

OV通配符证书具体申请流程

OV通配符HTTPS证书&#xff0c;也称为OV泛域名证书&#xff0c;是一种经过严格身份验证的证书类型&#xff0c;能够同时保护主域名以及主域名下所有二级子域名&#xff0c;为多个网站提供信息加密和身份认证服务。其申请过程相对于DV类型的证书会多几个步骤&#xff1a; 一、选…

“AIGC+开发安全”领域标杆厂商|海云安入选《2024网络安全十大创新方向》报告

近日&#xff0c;由国内信息安全领域知名权威媒体数说安全编写的《2024网络安全十大创新方向》报告&#xff08;以下简称“《报告》”&#xff09;正式发布。《报告》涵盖了一系列网络安全领域的前沿技术和新兴解决方案&#xff0c;针对每个创新方向进行了技术解读、核心能力、…

【Leetcode:2024. 考试的最大困扰度 + 滑动窗口】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

unity的语言问题记录(委托相关)

NGUI跟随鼠标实例位置 // 获取鼠标位置Vector3 mousePos Input.mousePosition;// 将屏幕坐标转换为NGUI的世界坐标Vector3 worldPos UICamera.mainCamera.ScreenToWorldPoint(mousePos);worldPos.z 0; // 确保图片在UI层// 设置图片位置instantiatedImage.transform.positio…

Mac环境下OpenTest使用总结

运行环境&#xff1a; node&#xff1a;20.5.1 npm&#xff1a;10.5.0 Java&#xff1a;1.8.0_351(如果存在多个版本Java&#xff0c;安装前将环境切换到jdk8) 安装 在终端输入命令 npm install opentest -g 开始 新建终端&#xff0c;输入命令&#xff1a; cd ~ mkdi…

视频转文字提取的7种工具,简单快速高效

视频内容的迅速增长让我们既享受了视觉盛宴&#xff0c;也面临着信息整理的挑战。很多时候我们看到一段文案内容很精彩的视频&#xff0c;想要记录里面的文字&#xff0c;你是不是听一句写一句呢&#xff1f;那样会非常耗费时间&#xff0c;如何将视频中的精华内容快速转化为可…