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

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

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

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

相关文章

书生·浦语大模型实战营之 OpenCompass大模型评测

书生浦语大模型实战营之 OpenCompass &#xff1a;是骡子是马&#xff0c;拉出来溜溜 为什么要研究大模型的评测&#xff1f; 百家争鸣&#xff0c;百花齐放。 首先&#xff0c;研究评测对于我们全面了解大型语言模型的优势和限制至关重要。尽管许多研究表明大型语言模型在多…

Linux cmake 初窥【2】

1.开发背景 基于上一篇的基础上&#xff0c;再次升级 2.开发需求 基于 cmake 指定源文件目录可以是多个文件夹&#xff0c;多层目录 3.开发环境 ubuntu 20.04 cmake-3.23.1 4.实现步骤 4.1 准备源码文件 工程目录如下 顶层脚本 compile.sh 负责执行 cmake 操作&#xff0…

FSC森林认证是什么?

FSC森林认证&#xff0c;又称木材认证&#xff0c;是一种运用市场机制来促进森林可持续经营&#xff0c;实现生态、社会和经济目标的工具。FSC森林认证包括森林经营认证&#xff08;Forest Management, FM&#xff09;和产销监管链认证&#xff08;Chain of Custody, COC&#…

微搭低代码入门06分页查询

目录 1 创建自定义代码2 编写分页代码3 创建页面4 创建变量5 配置数据列表总结 我们在数据模型章节介绍了微搭后端服务编写的三种方式&#xff0c;包括Http请求、自定义代码、云函数。本篇我们详细讲解一下利用自定义代码开发分页查询的功能。 1 创建自定义代码 打开控制台&am…

Qt——入门基础

目录 Qt入门第一个应用程序 main.cpp widget.h widget.cpp widget.ui .pro Hello World程序 对象树 编辑框 按钮 Qt 窗口坐标系 Qt入门第一个应用程序 main.cpp 这就像一开始学语言时都会打印一个“Hello World”一样&#xff0c;我们先来看看创建好一个项目后&…

LeetCode 难题解析 —— 正则表达式匹配 (动态规划)

10. 正则表达式匹配 思路解析 这道题虽然看起来不难理解&#xff0c;但却存在多种可能&#xff0c;当然这种可能的数量是有限的&#xff0c;且其规律对于每一次判别都使用&#xff0c;所以自然而然就想到用 动态规划 的方法啦 接下来逐步分析可能的情况&#xff1a; &#x…

栈(使用顺序表构建)

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1、栈的概念2、栈的数组构建方法2.1 前言2.2 正文2.2.1 栈的初始化2.2.2 栈的销毁2.2.3 压…

栈与队列(包括例题一道)

栈 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&…

AI去衣技术在动画制作中的应用

随着科技的发展&#xff0c;人工智能&#xff08;AI&#xff09;已经在各个领域中发挥了重要作用&#xff0c;其中包括动画制作。在动画制作中&#xff0c;AI去衣技术是一个重要的工具&#xff0c;它可以帮助动画师们更加高效地完成工作。 AI去衣技术是一种基于人工智能的图像…

神经网络怎么把隐含层变量融合到损失函数中?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

【工具分享】Amnesia2勒索病毒解密工具

前言 Amnesia 勒索软件于 2017 年 4 月 26 日开始出现。Amnesia 主要通过 RDP&#xff08;远程桌面服务&#xff09;暴力攻击进行传播&#xff0c;允许恶意软件作者登录受害者的服务器并执行勒索行为。 特征 Amnesia 是一种用 Delphi 编程语言编写的勒索软件&#xff0c;它使…

程序员的实用神器:助力软件开发的利器 ️

程序员的实用神器&#xff1a;助力软件开发的利器 &#x1f6e0;️ 程序员的实用神器&#xff1a;助力软件开发的利器 &#x1f6e0;️引言摘要自动化测试工具&#xff1a;保障代码质量的利剑 &#x1f5e1;️编写高效测试用例 持续集成/持续部署工具&#xff1a;加速交付的利器…

ASP.NET通用作业批改系统设计

摘  要 该系统采用B/S结构&#xff0c;以浏览器方式登陆系统&#xff0c;用ASP.NET作为开发语言&#xff0c;数据库则使用Microsoft SQL Server 2000实现。《通用作业批改系统》包括了学生子系统、教师子系统、管理员子系统三大模块&#xff0c;该系统主要完成学生&#xff…

基于C语言的贪吃蛇小游戏(简易版)

这篇博客会是对学习C语言成果的检测&#xff0c;为了实现贪吃蛇小游戏&#xff0c;我们用到的“工具”有&#xff1a;C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。 目录 1.简易版游戏效果 1.1欢迎界面 1.2游戏规则提示页面 1.3游戏进行页面 …

纯净水20、脉动30被指宰客!疯狂开始反噬小杨哥?

作为疯狂小杨哥早期粉&#xff0c;小柴好像很久没看到小杨哥的搞笑视频了。 自然&#xff0c;再在社交媒体上看到&#xff0c;小杨哥兄弟已经不再是那个青涩的少年了。 而是摇身一变不仅成为一个非常成功带货主播&#xff0c;且成为一个资本版图越来越多&#xff0c;玩的越来越…

现场面试题

这里写目录标题 1.sql1.1 只保留学生的最新成绩1.2 统计通话号码数1.3 更新地址 2.基础题2.1 请求序列第N位的值: 0, 1, 1, 2, ,3, 5, 8, 13, 21, 34.....第N位的值2.2 请写一段java代码&#xff0c;输出存在重复字母的单词 1.sql 1.1 只保留学生的最新成绩 表student中记录学…

网络安全之交换基础

交换属于二层技术。路由器&#xff08;router&#xff09;是三层设备&#xff0c;可以基于IP地址转发&#xff0c;但需要路由表来记录。 交换机&#xff08;switch&#xff09;是二层设备&#xff0c;网桥&#xff08;switch&#xff09;也是二层设备&#xff0c;这两个都是基…

SegFix:预测边界和预测方向来修正边界

论文标题&#xff1a;SegFix: Model-Agnostic Boundary Refinement for Segmentation 论文地址&#xff1a;https://arxiv.org/pdf/2007.04269.pdf 代码地址&#xff1a;https://github.com/openseg-group/openseg.pytorch 两种loss监督 八种方向变回归问题为分类问题 代码地…

PyQt6--Python桌面开发(1.安装配置环境)

一.PyQt6简介 PyQt&#xff1a;PyQt是一个功能强大且成熟的GUI框架&#xff0c;基于Qt库。它提供了丰富的组件、布局和主题选项&#xff0c;以及强大的功能和灵活性。PyQt的优点是它具有现代化的外观和丰富的功能&#xff0c;适用于复杂的GUI应用程序。然而&#xff0c;由于Py…