8.MyBatis 操作数据库(进阶)

news2024/5/18 15:15:12

文章目录

  • 1.动态SQL插入
    • 1.1使用注解方式插入数据
    • 1.2使用xml方式插入数据
    • 1.3何时用注解何时用xml?
    • 1.4使用SQL查询中有多个and时,如何自动去除多余and
      • 1.4.1方法一:删除and之后的代码如图所示,再次运行
      • 1.4.2方法二:加上trim标签后可以直接查询也不会报错
      • 1.4.3方法三:使用 `where`标签,也可以自动去除多余and
      • 1.4.4`<trim>`和`<where>`优缺点对比
  • 2.动态SQL查询
    • 2.1使用xml方式查询数据
    • 2.2使用注解查询数据
  • 3.动态SQL修改
    • 3.1使用xml方式修改数据
      • 3.1.1一般版本
      • 3.1.2使用`<trim>`标签版本
    • 3.2使用注解方式修改数据
      • 3.2.1使用`<set>`标签
  • 4.动态SQL删除
    • 4.1使用xml方式删除数据
      • 4.1.1使用`<foreach>`标签版本 - 批量删除数据
    • 4.2使用注解方式删除数据
    • 4.3`<sql><include>`标签
  • 5.知识拓展
    • 5.1DAO层、Service层和Controller层的区别
    • 5.2@Repository和@Mapper
    • 5.3项目报错如何自查

大家好,我是晓星航。今天为大家带来的是 MyBatis 操作数据库(进阶) 相关的讲解!😀

1.动态SQL插入

1.1使用注解方式插入数据

使用标签判断gender为不为空,并注入数据

image-20240322193856495

接口代码:

image-20240322193457246

test测试代码:

image-20240322193523851

运行:

image-20240322193713973

运行前:

image-20240322193636435

运行后:

image-20240322193733608

1.2使用xml方式插入数据

.xml文件配置输入:

image-20240322195105419

在接口中定义一个新方法:

image-20240322195131511

test测试代码:

image-20240322195217038

运行:

image-20240322195423555

运行前:

image-20240322193733608

运行后:

image-20240322195328212

1.3何时用注解何时用xml?

什么时候用注解,什么用xml方式
全凭个人喜好

进入公司之后用什么方式?
1.先看公司/团队 是否有要求(互联网公司大多没要求
2.先看同事用什么方式,同事用什么你用什么
3.如果同事用什么的都有

如果自由选择:
1.简单SQL 使用注解
2.动态SQL 使用xml

当前企业中的状态:
差不多55分,看团队的年轻状态(年龄比较小的喜欢注解)

1.4使用SQL查询中有多个and时,如何自动去除多余and

image-20240322200120273 image-20240322200126757

去除and

未加上trim标签时

可以看到修改完后代码报错了,那么是为什么呢?

image-20240322202947420

我们回到.xml文件中查找,发现我们注释掉id和name后,gender前面还有个and因此报错

image-20240322203057672

1.4.1方法一:删除and之后的代码如图所示,再次运行

image-20240322203226909

这次发现了四个结果:

image-20240322203410297

1.4.2方法二:加上trim标签后可以直接查询也不会报错

使用trim标签动态删减and

.xml文件:

image-20240322203736789

test测试文件代码:

image-20240322203941084

image-20240322203410297

查询到了四个结果

查询id去除and,使用trim

image-20240322204147973

运行结果:

image-20240322204108878

1.4.3方法三:使用 where标签,也可以自动去除多余and

.xml文件:

image-20240322204507672

test测试文件代码:

image-20240322204602600

运行结果:

image-20240322204638402

1.4.4<trim><where>优缺点对比

trim标签:

image-20240322204856104

where标签:

image-20240322205014764

2.动态SQL查询

2.1使用xml方式查询数据

.xml文件配置输入:

image-20240322202446735

在接口中定义一个新方法:

image-20240322202540388

test测试代码:

image-20240322202601122

运行:

image-20240322202627082

如果只保留查询女那么结果会变为什么呢?

image-20240322202902393

可以看到修改完后代码报错了,那么是为什么呢?

image-20240322202947420

我们回到.xml文件中查找,发现我们注释掉id和name后,gender前面还有个and因此报错

image-20240322203057672

删除and之后的代码如图所示,再次运行

image-20240322203226909

这次发现了四个结果:

image-20240322203410297

数据表student所有结果:

image-20240322203436969

2.2使用注解查询数据

使用trim标签:

.xml文件:

image-20240322203736789

test测试代码:

image-20240322210226906

运行结果:

image-20240322210311650

使用where标签:

.xml文件:

image-20240322210138823

test测试代码:

image-20240322210240895

运行结果:

image-20240322210351554

3.动态SQL修改

3.1使用xml方式修改数据

3.1.1一般版本

.xml文件配置输入:

image-20240322211407651

在接口中定义一个新方法:

image-20240322211430741

test测试代码:

image-20240322211444919

运行:

image-20240322211514835

3.1.2使用<trim>标签版本

image-20240322211621154

3.1.3使用<set>标签版本

image-20240322211938460

3.2使用注解方式修改数据

3.2.1使用<set>标签

.xml文件:

image-20240322212647999

test测试代码:

image-20240322212710056

运行结果:

image-20240322212729665

4.动态SQL删除

4.1使用xml方式删除数据

4.1.1使用<foreach>标签版本 - 批量删除数据

.xml文件配置输入:

image-20240324104423190

在接口中定义一个新方法:

image-20240324104448757

test测试代码:

image-20240324104513467

运行前:

image-20240324104324598

运行后:

image-20240324104607136 image-20240324104624048

4.2使用注解方式删除数据

.xml文件:

image-20240322212647999

test测试代码:

image-20240322212710056

运行结果:

image-20240322212729665

4.3<sql><include>标签

image-20240324105104662

使用这两个标签可以简化代码的写法,将一行代码通过传入一个参数解决

5.知识拓展

5.1DAO层、Service层和Controller层的区别

image-20240324112001591

简化理解:

image-20240324112329505

5.2@Repository和@Mapper

image-20240324112127633

image-20240324112135524

5.3项目报错如何自查

1.定位
2.解决

image-20240324113954937

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

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

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

相关文章

C语言——文件相关操作

2.什么是文件 3.文件的打开和关闭 4.文件的顺序读写 5.文件的随机读写 6.文本文件和二进制文件 7.文件读取结束的判定 8.文件缓冲区 一、文件相关介绍 1、为什么使用文件 文件用于永久存储数据。通过使用文件&#xff0c;我们可以在程序关闭后保存数据&#xff0c;以便将来…

Springboot图片上传【本地+oss】

文章目录 1 前端组件页面2 本地上传3 上传到阿里云oss3.1申请开通账号&#xff0c;做好先导准备3.2 开始使用 1 前端组件页面 使用的VueElement组件 在线cdn引入&#xff1a; <script src"https://cdn.bootcdn.net/ajax/libs/vue/2.7.16/vue.js"></script&…

Simulink|【免费】虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型

目录 主要内容 仿真模型要点 2.1 整体仿真模型 2.2 电压电流双闭环模块 2.3 SVPWM调制策略 2.4 无功电压模块 2.5 自适应控制策略及算法 部分结果 下载链接 主要内容 该模型为simulink仿真模型&#xff0c;主要实现的内容如下&#xff1a; 随着风力发电、…

免费APP分发平台 - 一个指南和解析

数字化时代的APP分发平台 随着数字化进程的加速免费APP分发平台 - 一个指南和解析&#xff0c;移动应用&#xff08;APP&#xff09;市场正迅速扩大。在这个充满竞争的市场中免费APP分发平台 - 一个指南和解析&#xff0c;一个优秀的APP分发平台能够帮助开发者和商家更有效地触…

用keras识别狗狗

一、需求场景 从照片从识别出狗狗 from keras.applications.resnet50 import ResNet50 from keras.preprocessing import image from keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as np# 加载预训练的ResNet50模型 model ResNet5…

网络知识点之—QoS

QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;指一个网络能够利用各种基础技术&#xff0c;为指定的网络通信提供更好的服务能力&#xff0c;是网络的一种安全机制&#xff0c; 是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来…

【matlab基础知识】(三)二维曲线绘制plot

x[-pi:0.0001:pi]; 选择较小步距 ysin(tan(x))-tan(sin(x));plot(x,y) 条件和函数值做一个点乘 x[-2:0.02:2];y1.1*sign(x).*(abs(x)>1.1)x.*(abs(x)<1.1);plot(x,y) 颜色&#xff0c;线形&#xff0c;曲线上的标志 由于0.01cosx波动太小&#xff0c;所以plotyy绘制多…

C语言 | Leetcode C语言题解之第64题最小路径和

题目&#xff1a; 题解&#xff1a; int minPathSum(int** grid, int gridSize, int* gridColSize) {int rows gridSize, columns gridColSize[0];if (rows 0 || columns 0) {return 0;}int dp[rows][columns];dp[0][0] grid[0][0];for (int i 1; i < rows; i) {dp[i…

【吃透Java手写】- Spring(上)-启动-扫描-依赖注入-初始化-后置处理器

【吃透Java手写】Spring&#xff08;上&#xff09;启动-扫描-依赖注入-初始化-后置处理器 1 准备工作1.1 创建自己的Spring容器类1.2 创建自己的配置类 ComponentScan1.3 ComponentScan1.3.1 Retention1.3.2 Target 1.4 用户类UserService Component1.5 Component1.6 测试类 2…

STM32——WWDG(窗口看门狗)

技术笔记&#xff01; 1.WWDG&#xff08;窗口看门狗&#xff09;简介 本质&#xff1a;能产生系统复位信号和提前唤醒中断的计数器。 特性&#xff1a; 递减的计数器&#xff1b; 当递减计数器值从 0x40减到0x3F时复位&#xff08;即T6位跳变到0&#xff09;&#xff1b; …

GPT-ArcGIS数据处理、空间分析、可视化及多案例综合应用

在数字化和智能化的浪潮中&#xff0c;GIS&#xff08;地理信息系统&#xff09;和GPT&#xff08;生成式预训练模型&#xff09;的结合正日益成为推动科研、城市规划、环境监测等领域发展的关键技术。GIS以其强大的空间数据处理、先进的空间分析工具、灵活的地图制作与可视化能…

OpenCV 实现重新映射(53)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV 实现霍夫圆变换(52) 下一篇 :OpenCV实现仿射变换(54) 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 一个。使用 OpenCV 函数 cv&#xff1a;&#xff1a;remap 实现简…

mysql-sql-练习题-4-标记(排名 条件判断)

标记 标记找规律连续登录2-7天用户建表排名找规律 最大连胜次数建表多次排名 找规律输出更多数据 标记计数 百分比 标记找规律 连续登录2-7天用户 建表 create table continuous_login(user_id1 integer comment 用户id,date_login date comment 登陆日期 ) comment 用户登录…

一加12/11/10/Ace2/Ace3手机上锁回锁BL无限重启黑屏9008模式救砖

一加12/11/10/Ace2/Ace3手机官方都支持解锁BL&#xff0c;搞机的用户也比较多&#xff0c;相对于其他品牌来说&#xff0c;并没有做出限制&#xff0c;这也可能是搞机党最后的救命稻草。而厌倦了root搞机的用户&#xff0c;就习惯性回锁BL&#xff0c;希望彻底变回官方原来的样…

约瑟夫问题新解法

前言 又碰到了约瑟夫问题&#xff0c;这样的题目本来用环形链表模拟的话就能做出来。然而&#xff0c;最近新学习了一种做法&#xff0c;实在是有点震惊到我了。无论是思路上&#xff0c;还是代码量上&#xff0c;都是那么的精彩。就想也震惊一下其他人。谁能想到原来模拟出来四…

Go-变量

可以理解为一个昵称 以后这个昵称就代指这些信息 var sg string "czy" 声明赋值 package mainimport "fmt"func main() {var sg string "陈政洋"fmt.Println(sg)var age int 73fmt.Println(age)var flag bool truefmt.Println(flag) } …

【JVM】内存调优——内存泄漏、内存溢出

内存调优 什么是内存泄漏、内存泄漏&#xff1f; 内存泄漏&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收。内存溢出&#xff1a;内存的使用量超过了Java虚拟机可以分配的上限&#xff…

ARP欺骗使局域网内设备断网

一、实验准备 kali系统&#xff1a;可使用虚拟机软件模拟 kali虚拟机镜像链接&#xff1a;https://www.kali.org/get-kali/#kali-virtual-machines 注意虚拟机网络适配器采用桥接模式 局域网内存在指定断网的设备 二、实验步骤 打开kali系统命令行&#xff1a;ctrlaltt可快…

栈的表达式求值中的应用——逆波兰表达式求值+中缀表达式转后缀表达式

文章目录 1. 逆波兰表达式&#xff08;后缀表达式&#xff09;求值思路讲解AC代码 2. 中缀表达式转后缀表达式分析方法总结 3. 中缀表达式求值 1. 逆波兰表达式&#xff08;后缀表达式&#xff09;求值 链接: link 这道题目叫做逆波兰表达式求值&#xff0c;那什么是逆波兰表…

使用PyTorch从头实现Transformer

前言 本文使用Pytorch从头实现Transformer&#xff0c;原论文Attention is all you need paper&#xff0c;最佳解读博客&#xff0c;学习视频GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文&#xff0c;并对其进行了…