springboot3--数据访问

1.整合SSM场景

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

1.0 创建数据相关的MYSQL

create table `ssm`(`id` int(20) not null auto_increment comment '编号',`login_name` varchar(200) null default null comment '用户名称' collate 'utf8_bin',`nick_name` varchar(200) null default null comment '用户昵称' collate 'utf8_bin',`password` varchar(200) null default null comment '用户密码' collate 'utf8_bin',primary key (`id`)
);insert into ssm(login_name, nick_name, password) 
VALUES ('zhangsan','张三','123456');

1.1 创建SSM整合项目

依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.3</version><scope>test</scope></dependency></dependencies>

1.2 配置数据源

#1.配置数据源信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=1234

安装MybatisX插件,帮我们生成Mapper接口的xml文件。ALT+回车

1.3 配置mybatis

@SpringBootApplication
//告诉mybatis扫描哪个包下的所有接口
//mybatis.mapper-locations 告诉MyBatis,每个接口的xml文件都在哪里 在配置properties中
@MapperScan(basePackages = "com.example.boot3ssm.mapper")# 配置整合Mybatis
mybatis.mapper-locations=classpath:/mapper/*.xml
#驼峰命名规则
mybatis.configuration.map-underscore-to-camel-case=true

1.4 编写CRUD

编写controller service mapper crud
参考如下

1.5 自动配置原理

SSM整合总结:
1.导入mybatis-spring-boot-starter
2.配置数据源信息
3.配置mybatis的 mapper接口扫描xml映射文件扫描
4.编写bean,mapper,生成xml,编写sql进行crud
5.效果:

  • 所有sql写在xml中
  • 所有 mybatis配置写在application.properties下面
1.5.1 DataSourceAutoconfiguration: 配置了数据源等基本信息
  • mybatis-spring-boot-starter导入spring-boot-starter-jdbc,jdbc是操作数据库的场景
  • jdbc场景的自动配置
    • org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
      • 数据源的自动配置
      • 所有和数据源有关的配置都绑定在 DatasourceProperties
      • 默认使用HikariDataSource
    • org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration
    • 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事务

1.5.2 MyBatisAutoConfiguration:配置了MyBatis的整合流程
  • mybatis-spring-boot-starter导入mybatis-spring-boot-autoconfigure(mybatis的自动配
    置包)
  • 默认加载两个自动类:
    • org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
    • org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration

MybatisAutoConfiguration

@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties({MybatisProperties.class})
@AutoConfigureAfter({DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class})
  • 必须在数据源配置好之后才配置
  • 给容器中 sqlsessionFactory组件,创建和数据库的一次会话
  • 给容器中 SqlsessionTemplate 组件。操作数据库
  • MyBatis的所有配置绑定在 MybatisProperties
  • 每个Mapper接口代理对象是怎么创建放到容器中。详见**@MapperScan**原理:
    • 利用 @Import(MapperScannerRegistrar.class)批量给容器中注册组件。解析指定的包路径里面的每一个类,为每一个Mapper接口类,创建Bean定义信息,注册到容器中。

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

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

相关文章

西门子Mendix低代码资深技术顾问张戟,将出席“ISIG-低代码/零代码技术与应用发展峰会”

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;LowCode低码时代、RPA中国、AIGC开放社区&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索低…

Java应用Memory Mapped Files机制

Java中利用Memory Mapped Files&#xff08;内存映射文件&#xff09;机制进行顺序写操作是一种高效的文件处理方式&#xff0c;特别是在处理大文件时。这种技术允许我们将文件的一部分或全部映射到内存中&#xff0c;从而可以直接通过内存地址来访问文件内容&#xff0c;而不是…

生物分子体系结构预测开源模型RoseTTAFold All-Atom的conda环境部署及使用

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、RoseTTAFold All-Atom(RFAA)是什么&#xff1f;二、安装步骤1. 安装mamba&#xff08;非必须的&#xff0c;conda也可以&#xff09;2. 下载RoseTTAFold-All-Atom3. 创建conda环境并安装4. 安装…

协议-http协议-基础概念04-长短连接-重定向-cookie-缓存-代理

参考来源&#xff1a; 极客时间-透视HTTP协议(作者&#xff1a;罗剑锋)&#xff1b; 01-长短连接 HTTP 协议最初&#xff08;0.9/1.0&#xff09;是个非常简单的协议&#xff0c;通信过程也采用了简单的“请求 - 应答”方式。 它底层的数据传输基于 TCP/IP&#xff0c;每次发…

程序人生 - 爬虫者,教育也!

作为一个站长&#xff0c;你是不是对爬虫不胜其烦&#xff1f;爬虫天天来爬&#xff0c;速度又快&#xff0c;频率又高&#xff0c;服务器的大量资源被白白浪费。 看这篇文章的你有福了&#xff0c;我们今天一起来报复一下爬虫&#xff0c;直接把爬虫的服务器给干死机。 本文有…

ubuntu安装开源汇编调试器NASM

安装 安装很简单&#xff0c;直接在终端输入以下命令即可 sudo apt-get install nasm 安装完成后&#xff0c;如果可以查看到nasm的版本号即可视为安装成功 nasm -version 测试 创建汇编文件 创建一个asm文件 vim hello.asm 文件内容如下 section .datahello: db …

如何高效进行 API 性能测试:详细教程

在构建和维护 API 时&#xff0c;性能和稳定性是至关重要的考量因素&#xff0c;API 的性能直接影响着用户体验和系统的可用性&#xff0c;因此对其进行全面的性能测试是不可或缺的一环。 针对 API 的性能测试&#xff0c;一般通过模拟实际用户行为、压力测试和负载测试等方式…

记一次无vmcore内存死机问题分析过程

问题现象 客户发现在物理机上跑读写业务时&#xff0c;出现了一次死机现象&#xff0c;kdump服务未抓到vmcore文件。/var/log/messages里没有发现内核panic报错信息&#xff0c;只有call trace的警告信息。抓取到的call trace信息总共有三种类型&#xff1a;内存分配失败、rmm…

Keil C51 汉字显示 BUG 解决方案

Keil C51在编译的时候会将0xFD的字符&#xff08;有些汉字含有该字符的内码&#xff09;过滤&#xff0c;而导致编码与实际不符&#xff0c;如“三”实际编码&#xff1a;0XC8FD&#xff0c;而Keil C51则输出为0xC800。 keil官方 由于涉及该BUG的汉字并不是很多&#xff0c;所…

7.无重复字符的最长字串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为…

【2024年第三届中国高校大数据挑战赛】赛题 D:行业职业技术培训能力评价 思路+代码+参考论文

【2024年第三届中国高校大数据挑战赛】赛题 D&#xff1a;行业职业技术培训能力评价 思路代码参考论文 加群可以享受定制等更多服务&#xff0c;或者搜索B站&#xff1a;数模洛凌寺 联络组织企鹅&#xff1a;904117571 以下是D题老师的解题思路&#xff08;企鹅内还会随时更新…

Unity性能优化篇(十一) 动画优化

1.恰当地设置Animator组件的Culling Mode。Always Animate表示如果该动画不可见&#xff0c;也会播放它。Cull Update Transformations表示如果该动画不可见&#xff0c;则不会渲染该动画&#xff0c;但是依然会根据该动画的播放来改变游戏对象的位置、旋转、缩放&#xff0c;这…

html5cssjs代码 004 2035年倒计时

html5&css&js代码 004 2035年倒计时 一、代码二、解释DOCTYPE声明&#xff1a;head部分&#xff1a;body部分&#xff1a;script标签&#xff1a; 这段HTML代码实现了一个倒计时页面&#xff0c;倒计时的目标日期是2035年1月1日。页面中使用一个<div>元素显示倒计…

2024计算机软考基本介绍、考试时间、考试科目等2024年软考新变化政策 证书的作用

专栏系列文章推荐&#xff1a; 2024高级系统架构设计师备考资料&#xff08;高频考点&真题&经验&#xff09;https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】&#xff08;2024年软考高级…

【考研数学】张宇学习包

张宇的授课侧重于启发学生的综合思维能力。对于基础较好的学生而言&#xff0c;在听完他的课后&#xff0c;解题通常不会构成太大问题&#xff0c;而且可以学到许多解题技巧&#xff0c;其中包括张宇老师创造的易记的“点火公式”。 然而&#xff0c;对于基础较薄弱的学生来说…

无人机手持地面站软件功能详解,无人机手持地面站软件开发人员组成及成本分析

无人机手持地面站软件是专为无人机操控和任务管理设计的移动应用&#xff0c;它通常集成在智能手机、平板电脑或其他便携式设备上&#xff0c;使得用户可以在远离无人机的地方对飞行器进行实时监控与远程控制。 主要功能详解&#xff1a; 1. 飞行控制与姿态显示&#xff1a; …

基于springboot+vue实现乌鲁木齐南山冰雪旅游服务网管理系统项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现南山冰雪旅游服务网演示 摘要 随着2022年北京冬奥会的成功举办&#xff0c;在冬天进行冰雪运动已经逐渐流行起来&#xff0c;人们慢慢享受到了冰雪活动给大家带来的欢乐&#xff0c;除此之外人们的身体素质也可以得到提升。虽然已经有一部分人可以接受并…

关于yolov8文档的记录,补充一些整理的知识点

2023年由Ultralytics 提供了YOLOv8开源项目。YOLOv8 支持全方位的视觉 AI 任务&#xff0c;包括检测、分割、姿态估计、跟踪和分类。这种多功能性使用户能够在各种应用和领域中利用YOLOv8 的功能。安装yolov8开源项目 pip install githttps://github.com/ultralytics/ultralyti…

Kafka整理-Consumer Group(消费者群组)

在Apache Kafka中,消费者群组(Consumer Group)是一种强大的机制,用于实现消息的分发和负载均衡。以下是消费者群组的关键概念和工作原理: 消费者群组的基本概念 1、组成: 消费者群组由一系列的消费者(Consumers)组成,这些消费者共同订阅一个或多个主题(Topics)。2、…

C语言输出时间——解释01

库文件 time.h #include <stdio.h> #include <time.h> int main() { // 设置本地化环境为中文&#xff0c;以便输出中文格式的时间 // 获取当前时间 time_t rawtime; //时间变量 struct tm *timeinfo; // struct tm 时间的结构体时间库自带的 /*结构 stru…