MySQL(事务、索引)MyBatis

目录

事务

概述

四大特性(ACID)

索引

结构

语法

MyBatis

数据库连接池

lombok

基本操作--增删改查

根据主键删除

新增

更新

查询(根据ID查询)

查询(条件查询)

XML映射文件

动态SQL

动态条件查询

标签和标签

动态更新

标签和标签

循环遍历--

标签和标签

开发规范-Restful

案例杂项

员工信息分页查询

分页查询插件PageHelper


事务

概述

事务指的是一组操作的集合,是一个不可分割的工作单位。事务会将所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

默认MySQL的事务是自动提交,即当执行一条DML语句时,MySQL会立即隐式的提交事务

开启事务后运行事务不会对数据改变,commit后才会改变数据

如果有命令发生错误,需要进行rollback进行回滚、

四大特性(ACID)

索引

索引(index)是可以帮助数据库高效获取数据数据结构

结构

语法

数据库会默认创建主键索引,并且性能最高

MyBatis

MyBatis是一款优秀的持久层框架(dao层),用于简化JDBC开发

对于数据库的操作只需要关注properties文件和SQL语句即可,完爆JDBC!!!

数据库连接池

数据库连接池是个容器,负责分配、管理数据库连接

数据库连接池允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优势:资源重用、提升系统响应速度、避免数据库连接遗漏

标准接口:DataSource

官方(sun)提供的数据库连接池接口,由第三方组织实现此接口

功能:获取连接

Connection getConnection() throws SQLException

Hikari--追光者(springboot默认连接池)

Druid--德鲁伊(阿里巴巴开源的数据库连接池)

lombok

基本操作--增删改查

根据主键删除

delete方法的返回值代表操作影响的记录数目

预编译SQL:性能更高,更安全(防止SQL注入)

更常用的是#{}

新增

主键返回:

更新

查询(根据ID查询)

问题:数据封装

白雪警告

真正解决:

配置文件中加入驼峰命名自动映射

严格遵守数据库中字段名a_column映射到java属性名aColumn

查询(条件查询)

使用concat函数

XML映射文件

注意:使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

动态SQL

动态条件查询
<if>标签和<where>标签

动态更新
<if>标签和<set>标签

循环遍历--<foreach>

<sql>标签和<include>标签

开发规范-Restful

案例杂项

日志生成(加入Slf4j注解即可直接使用log)、指定请求方法为GET(加GetMapping注解或加入method)

关于Controller优化(类鸡肋)

员工信息分页查询

分页查询插件PageHelper

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

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

相关文章

[图解]《分析模式》漫谈16-“我用的”不能变成“我的”

1 00:00:00,720 --> 00:00:02,160 今天&#xff0c;我们来说一下 2 00:00:02,170 --> 00:00:04,850 “我用的”不能变成“我的” 3 00:00:04,860 --> 00:00:11,390 《分析模式》的前言 4 00:00:12,260 --> 00:00:13,410 有这么一句话 5 00:00:14,840 --> 0…

Windows安装go语言开发环境

一、下载安装包 安装包下载地址 下载完毕后双击进行安装。 查看是否安装成功&#xff1a; go version #查看go版本 go env #查看go环境变量正常显示则安装完成。 二、安装vscode 一般开发go语言项目使用vscode工具&#xff1a; 下载地址 下载完毕后双击进行安装。 三…

【鸿蒙学习笔记】UI・常用组件・Button・按钮组件・ButtonType

官方文档&#xff1a;按钮 (Button) 目录标题 ButtonType ButtonType 胶囊类型&#xff08;Capsule&#xff09;・圆形按钮&#xff08;Circle&#xff09;・普通按钮&#xff08;Normal&#xff09;・自定义 Column({ space: 10 }) {Text(Normal).fontSize(20).fontColor(Col…

【人工智能 | 机器学习 | 理论篇】模型评估与选择

文章目录 1. 经验误差与过拟合2. 模型评估方法2.1 模型评估概念2.2 留出法2.3 k 折交叉验证法2.4 自助法2.5 调参与最终模型 3. 性能度量3.1 均方误差3.2 错误率、精度3.3 查准率、查全率3.3 扩展3.4 ROC 与 AUC3.5 代价敏感错误率与代价曲线 4. 比较检验4.1 假设检验4.2 交叉验…

使用Java填充Word模板的技术详解

目录 概述常见的Java Word处理库 Apache POIAspose.Words for JavaDocx4j 使用Apache POI填充Word模板 创建和读取Word文档填充文本填充表格 使用Aspose.Words for Java填充Word模板 创建和读取Word文档填充文本填充表格 使用Docx4j填充Word模板 创建和读取Word文档填充文本填…

【一次记一句:SQL】从 information_schema.TABLES中查询数据库表中记录数据量

有时候&#xff0c;一张千万数据量的表&#xff0c;使用 count(*) 统计记录数&#xff0c;查不动。可以使用下述SQL来试试&#xff1a; SELECT CONCAT(table_schema, ., table_name) AS "Table Name", table_rows AS "Number of Rows", CONCAT(ROUND(data…

uniapp小程序项目解决键盘问题

1. 点击输入框&#xff0c;使页面不上移&#xff0c;并实现软键盘弹出。 步骤&#xff1a; 1. 使用adjust-position属性&#xff0c;禁止页面上移&#xff1b; 2. 但此时如果输入框在底部&#xff0c;当点击输入时&#xff0c;键盘会弹起&#xff0c;这时候需要动态移动输入框的…

matlab中plot的一些用法

文章目录 一、基本用法二、绘制多个数据集三、设置线型、颜色四、添加标题和标签五、添加图例六、设置轴范围七、绘制网格八、 在同一图中绘制多个子图九、绘制带误差条的图十、绘制半对数图和对数图十一、绘制填充区域图十二、综合案例 一、基本用法 x 0:0.1:10; y sin(x);…

技术成神之路:设计模式(八)责任链模式

介绍 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它允许多个对象依次处理请求&#xff0c;避免请求的发送者和接收者之间的显式耦合。该模式通过将多个可能处理请求的对象连接成一条链&#xff0c;并沿着这条链传递请求…

【乐吾乐2D可视化组态编辑器】切换画面

切换画面 乐吾乐2D可视化组态编辑器demo&#xff1a;https://2d.le5le.com/ 方式1&#xff1a;open切换 推荐使用meta2d.open切换新画面 const pen {name: "rectangle",text: "矩形",x: 100,y: 100,width: 100,height: 100,events: [{name: "c…

Cadence23导入板框时的疑难杂症

1.为啥导入板框之后元器件找不到了呢&#xff1f; 因为导入板框的时候没有勾选 增加量 &#xff0c;导致导入的板框新建了一个文件&#xff1a; 2.导入板框之后3D显示还是不没有导入呀&#xff1f; 那是因为导入的板框还带有铜皮属性&#xff0c;需要change命令把其换为板框…

【算法】算法模板

算法模板 文章目录 算法模板简介数组字符串列表数学树图动态规划 简介 博主在LeetCode网站中学习算法的过程中使用到并总结的算法模板&#xff0c;在算法方面算是刚过初学者阶段&#xff0c;竞赛分数仅2000。 为了节省读者的宝贵时间&#xff0c;部分基础的算法与模板未列出。…

Springboot 3.x - Reactive programming (2)

三、WebFlux Blocking Web vs. Reactive Web Blocking Web (Servlet) and Reactive Web (WebFlux) have significant differences in several aspects. 1. Front Controller Servlet-Blocking Web: Uses DispatcherServlet as the front controller to handle all HTTP req…

51单片机13(动态数码管实验)

一、数码管动态显示原理 1、动态显示是利用减少段选线&#xff0c;分开位选线&#xff0c;利用位选线不同时选择通断&#xff0c;改变段选数据来实现的。 &#xff08;1&#xff09;多位数码管依然可以进行静态的一个显示&#xff0c;那么在前面我们介绍静态数码管的时候&…

Nginx(详解以及如何使用)

目录 1. 什么是Nginx&#xff1f; 2. 为什么使用nginx? 3. 安装nginx 3.1 安装nginx的依赖插件 3.2 下载nginx 3.3 创建一个目录作为nginx的安装路径 3.4 解压 3.5 进入解压后的目录 3.6 指定nginx的安装路径 3.7 编译和安装nginx 3.8 启动nginx 3.9 访问nginx 4. ngin…

【python】Python中闭包的是什么,闭包原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

MongoDB教程(十四):MongoDB查询分析

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、查询分…

队列及其应用(用栈实现队列 力扣225)

队列概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾 出队列&#xff1a;进行删除操作的一端称为队头 队列的代码…

09.甜甜圈旋转加载动画 计数器

甜甜圈旋转加载动画 创建一个甜甜圈形状的旋转加载动画,可用于指示内容的加载。 为整个元素使用半透明的 border。排除一侧,它将作为甜甜圈的加载指示器。定义并使用合适的动画,使用 transform: rotate() 旋转元素。<body><div class="donut"></div&…

Python print() 格式化输出

Python print{} 格式化输出 1. print()2. 浮点数 (float)References 1. print() 传递给函数的值称为参数。 引号没有打印在屏幕上&#xff0c;它们只是表示字符串的起止&#xff0c;不是字符串的一部分。可以用这个函数在屏幕上打印出空行&#xff0c;只要调用 print() 就可以…