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

文章目录

  • 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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB实现遗传算法优化同时取送货的车辆路径问题VRPSDP

同时取送货的车辆路径问题VRPSDP的数学模型如下: 模型假设 所有车辆的载重、容量等性能相同。每个客户的需求&#xff08;送货和取货量&#xff09;是已知的&#xff0c;且在服务过程中不会改变。车辆的行驶速度恒定&#xff0c;不考虑交通拥堵等实时路况变化。每个客户点只能…

【C语言】——结构体

【C语言】——结构体 一、结构体类型的声明1.1、结构体的声明1.2、结构体变量的创建和初始化1.3、结构体的特殊声明1.4、结构体的自引用1.5、结构体的重命名 二、 结构体的内存对齐2.1、对齐规则2.2、结构体对齐实践2.3、为什么存在内存对齐2.4、修改默认对齐数 三、结构体传参…

数据结构------栈的介绍和实现

目录 1.栈的一些初步认识 2.栈的实现 3.相关的函数介绍 &#xff08;1&#xff09;栈的初始化 &#xff08;2&#xff09;栈的销毁 &#xff08;3&#xff09;栈的数据插入 &#xff08;6&#xff09;判断是否为空 &#xff08;7&#xff09;栈的大小 4.栈的实现完整…

C语言例题31:在屏幕上显示一个菱形

题目要求&#xff1a;在屏幕上显示一个菱形 #include <stdio.h>void main() {int i, j;int x;printf("输入菱形行数(3以上的奇数&#xff09;&#xff1a;");scanf("%d", &x);//显示菱形上面的大三角形for (i 1; i < (x 1) / 2; i) {for (…

【R语言数据分析】相关性分析:pearson与spearman

相关性分析是探寻两个变量之间关联关系的分析方法&#xff0c;注意相关性分析仅仅针对连续型变量和有序分类变量&#xff0c;对于无需分类变量就不存在相关性分析了&#xff0c;而是通过差异分析来间接反映相关性。比如性别和身高的关系就无法做相关性分析&#xff0c;虽然我们…

RHCE shell-第一次作业

要求&#xff1a; 1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检査- 次磁盘剩余空间。 2、判断web服务是否运行(1、查看进程的方式判断该程序是否运行&#xff0c;2、通过查看端口的方式 判断该程序是否运…

动态规划——最短编辑距离

一、问题描述 最短编辑距离(Minimum Edit Distance)&#xff0c;也被称为Levenshtein距离&#xff0c;是一种计算两个字符串间的差异程度的字符串度量(string metric)。我们可以认为Levenshtein距离就是从一个字符串修改到另一个字符串时&#xff0c;其中编辑单个字符&#xff…

从零开始学AI绘画,万字Stable Diffusion终极教程(二)

【第2期】关键词 欢迎来到SD的终极教程&#xff0c;这是我们的第二节课 这套课程分为六节课&#xff0c;会系统性的介绍sd的全部功能&#xff0c;让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 在第一节课里面&#xff0c;我们…

CPP#类与对象4

友元 关键字&#xff1a;friend 友元的实现&#xff1a;全局函数做友元&#xff1b; 类做友元&#xff1b; 成员函数做友元。 .1全局函数做友元 class Point { private:double x, y; public:Point(double xx, double yy); friend int Distance(Point &a, Point &b)…

关于win平台c语言引入开源库的问题与解决

许久不写博客&#xff0c;五一还在加班&#xff0c;就浅浅写一篇吧 最近除了做物联网平台 还对网关二次开发程序做了修改&#xff0c;网关的二次开发去年年底的时候做过&#xff0c;但是当时的逻辑不是十分完善&#xff0c;差不多已经过了半年了&#xff0c;很多细节已经忘记了…

探索APP托管服务分发平台的魅力 - 小猪APP分发平台(APP托管)

什么是APP托管服务分发平台 APP托管服务分发平台是一个集成了代码托管、构建集成、测试、发布和监控等全面性服务的平台。让开发者可以专注于创作探索APP托管服务分发平台的魅力 - 小猪APP分发平台&#xff0c;而不必花费太多精力在app的维护和分发上。 为什么要选择APP托管服…

D3CTF2024

文章目录 前言notewrite_flag_where【复现】D3BabyEscapePwnShell 前言 本次比赛笔者就做出两道简单题&#xff0c;但队里师傅太快了&#xff0c;所以也没我啥事。然后 WebPwn 那题命令行通了&#xff0c;但是浏览器不会调试&#xff0c;然后就简单记录一下。 note 只开了 N…

绘图神器===draw.io

文章目录 前言打开看看版本总结 前言 看到一个好玩的神器&#xff0c;Draw.io 看到一个网页draw.io&#xff0c;打开一看&#xff0c;还不错&#xff0c;是一款网页端的绘图平台。支持各种各样的绘制需求&#xff0c;像类图&#xff0c;流程图&#xff0c;泳道图&#xff0c;…

OpenCV如何模板匹配(59)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV如何实现背投(58) 下一篇 &#xff1a;OpenCV在图像中寻找轮廓(60) 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 matchTemplate()搜索图像贴片和输入…

李沐-46 语义分割和数据集【动手学深度学习v2】

在语义分割中&#xff0c;不是一张图片分配一个label&#xff0c;而是为图片的每一个像素点分配一个label。假设我们输入的是RGB三通道的图片&#xff0c;即每个像素点颜色可以表示为(x, y, z)&#xff0c;那么为了给像素点打上label&#xff0c;我们需要构建一个映射关系&…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

24.哀家要长脑子了!

目录 1.594. 最长和谐子序列 - 力扣&#xff08;LeetCode&#xff09; 2.350. 两个数组的交集 II - 力扣&#xff08;LeetCode&#xff09; 3.554. 砖墙 - 力扣&#xff08;LeetCode&#xff09; 4.9. 回文数 - 力扣&#xff08;LeetCode&#xff09; 5.13. 罗马数字转整数 …

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库&#xff0c;全称为Data-Driven Documents&#xff0c;即数据驱动文档。它以数据为核心&#xff0c;通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具&#xff0c;使得开发者能够创建出各种交互式和动态的数据可…

Linux服务器常用命令总结

view查找日志关键词 注意日志级别&#xff0c;回车后等一会儿&#xff0c;因为文件可能比较大加载完需要时间 当内容显示出来后&#xff0c;使用“/关键词”搜索 回车就能搜到&#xff0c;n表示查找下一个&#xff0c;N表示查找上一个 find 查找 find Family -name book …

华为平板手机如何清理应用市场的存储空间

如何清理应用市场的存储空间 适用产品&#xff1a; 手机&#xff0c;平板 适用版本&#xff1a;不涉及系统版本 如果您的应用市场显示应用的数据较大&#xff0c;可能是下载的安装包没有安装成功&#xff0c;导致安装包未自动删除。&#xff08;可参考&#xff1a;应用市场下…