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://xiahunao.cn/news/3015435.html

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

相关文章

vin码查询接口快速对接

vin码查询接口全称叫VIN车辆识别代码查询接口&#xff0c;也叫车架号查询接口&#xff0c;指的是通过车辆VIN&#xff08;车架号&#xff09;查询车辆相关信息&#xff0c;如车辆品牌、车型、油耗、车身形式、排量等等。那么vin查询接口如何快速对接呢&#xff0c;接下来我们聊…

Git命令Gitee注册idea操作git超详细

文章目录 概述相关概念下载和安装常见命令远程仓库介绍与码云注册创建介绍码云注册远程仓库操作关联拉取推送克隆 在idea中使用git集成add和commit差异化比较&查看提交记录版本回退及撤销与远程仓库关联 push从远程仓库上拉取&#xff0c;克隆项目到本地创建分支切换分支将…

详解:牵牛易帮-免费知识库工具的弊端

众所周知&#xff0c;知识库工具已成为企业必不可少的一部分&#xff0c;它们可以提升工作效率、优化客户体验。牵牛易帮作为一款免费的知识库工具&#xff0c;吸引了众多小微企业和个人用户。然而&#xff0c;免费是有两面性的&#xff0c;牵牛易帮也不例外。本文将对牵牛易帮…

uniapp日期区间选择器

uniapp日期区间选择器 在 uniapp 中创建一个简单的自定义日期范围的日期区间选择器&#xff1a; - 限制有效日期范围开始日期为 2024-01-01&#xff0c;结束日期为当日&#xff1b; - 默认日期区间为当日向前计算的7日区间&#xff1b; - 选择开始时间后&#xff0c;判断不可大…

Python爬虫--Urllib基础

1. urlretrieve Urllib 库也是类似 request 库&#xff0c;用来解析html的 首先讲 urlretrieve 子模块 这个模块的作用是将网页下载到本地 语法&#xff1a; urlretrieve(网址,本地地址) 例如&#xff1a; 这样就可以了&#xff0c;他会将百度网页下载到本地D盘下&#x…

安卓自动化脚本制作流程详解!

在移动应用日益普及的今天&#xff0c;安卓自动化脚本制作成为了开发者提高工作效率、减少重复劳动的重要手段&#xff0c;本文将详细介绍安卓自动化脚本的制作流程&#xff0c;并通过五段源代码的实例&#xff0c;帮助读者更好地理解和掌握这一过程。 一、安卓自动化脚本制作…

光电探测器性能指标测试

光电探测器的三个核心指标&#xff1a; 带宽&#xff0c;转换增益&#xff0c;噪声(信噪比&#xff0c;NEP&#xff0c;噪声密度) 测试环境&#xff1a;可调谐激光器&#xff08;CW LASER&#xff09;&#xff0c;强度调制器(AM)&#xff0c;信号发生器(AWG)&#xff0c;可调衰…

EtherCAT开发_4_分布时钟知识点摘抄笔记1

分布时钟 (DC&#xff0c;Distributed Cl ock) 可以使所有EtherCAT设备使用相同的系统时间&#xff0c;从而控制各设备任务的同步执行。从站设备可以根据同步的系统时间产生同步信号&#xff0c;用于中断控制或触发数字量输入输出。支持分布式时钟的从站称为 DC 从站。分布时钟…

小红书餐饮推广怎么合作?纯干货

小红书作为国内领先的生活方式分享平台&#xff0c;其用户群体主要集中在一二线城市&#xff0c;年龄分布在18-35岁之间&#xff0c;其中女性用户占比高达80%。这部分用户具有较高的消费能力、审美追求和品质生活需求&#xff0c;对美食有着极高的兴趣和消费意愿&#xff0c;为…

快速修复vcruntime140_1.dll丢失问题,多个亲测有效的方法分享

vcruntime140_1.dll 是Microsoft Visual C Redistributable包中的一个关键动态链接库&#xff08;Dynamic Link Library&#xff09;文件&#xff0c;它对于运行基于Visual C开发的应用程序至关重要。此文件属于运行时组件&#xff0c;为应用程序提供必要的运行时支持&#xff…

Java解决垂直鉴权问题(对垂直权限进行校验)

Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09; 文章目录 Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09;前言一、垂直鉴权是什么&#xff1f;二、实现过程1.新建接口权限菜单映射表2.项目初始化时加载接口菜单映射关系3.自定义过滤器拦截…

进程软中断通信实验

【预备知识】 进程软中断通信涉及的系统调用描述如下。 1&#xff0e;kill() 进程用kill()向一个进程或一组进程发送一个信号。系统调用格式为int kill(pid,sig)。其中&#xff0c;pid是一个或一组进程的标识符&#xff0c;sig是要发送的软中断信号。信号的发送分如下三种情况。…

视频剪辑神器:批量高效处理,轻松锐化视频让影片焕然一新!

视频已经成为我们记录生活、分享故事、展示才华的重要形式。然而&#xff0c;面对大量的视频文件&#xff0c;如何批量高效剪辑并提升视频质量&#xff0c;成为了许多人的难题。现在&#xff0c;我们为您带来一款视频剪辑神器&#xff0c;让您轻松处理视频&#xff0c;让您的影…

Linux Systemd基础教程

一、什么是systemd&#xff1f; systemd是Linux系统的一套基本构建模块。它提供了一个系统和服务管理器&#xff0c;作为PID 1运行并启动系统的其余部分。 systemd提供积极的并行化功能&#xff0c;使用套接字和D-Bus激活来启动服务&#xff0c;提供按需启动守护进程&#xf…

shell常用文件处理命令

1. 解压 1.1 tar 和 gz 文件 如果你有一个 .tar 文件,你可以使用以下命令来解压: tar -xvf your_file.tar在这个命令中,-x 表示解压缩,-v 表示详细输出(可选),-f 后面跟着要解压的文件名。 如果你的 .tar 文件同时被 gzip 压缩了(即 .tar.gz 文件),你可以使用以下…

开发组合php+mysql 人才招聘小程序源码搭建 招聘平台系统源码+详细图文搭建部署教程

随着互联网的快速发展&#xff0c;传统的招聘方式已经不能满足企业和求职者的需求。为了提高招聘效率&#xff0c;降低招聘成本&#xff0c;越来越多的人开始关注人才招聘小程序、在线招聘平台。分享一个人才招聘小程序源码及搭建&#xff0c;让招聘更加高效便捷。系统是运营级…

工厂模式应用实例

引言 设计模式概念 设计模式&#xff08;Design Pattern&#xff09;的官方概念可以表述为&#xff1a;在软件设计中&#xff0c;设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它是针对特定问题或特定场景的解决方案&#xff0c;是一种经过…

04-22 周日 阿里云-瑶光上部署FastBuild过程(配置TLS、自定义辅助命令)

04-22 周日 阿里云-瑶光上部署FastBuild过程 时间版本修改人描述2024年4月22日14:18:59V0.1宋全恒新建文档2024年4月23日20:41:26V1.0宋全恒完成了基本流程的添加 简介 前提 准备两台服务&#xff0c;一台部署Docker&#xff0c;一台部署FastBuild的镜像容器服务所述的Docke…

最高20K/月,安全、数通、云计算多个方向急招,可内推!

高级安全工程师【岗位职责及要求】 1、统筹负责行业客户的安全项目交付&#xff0c;能够独自输出技术方案并完成施&#xff0c;并具备指导初中级工程师实施的能力&#xff1b; 2、掌握H3C全系列安全产品功能并对全系列产品原理有深入了解&#xff0c;能够熟练完成安全产品规划及…

Spring IoCDI(3)—DI详解

目录 一、属性注入 二、构造方法注入 小结&#xff1a;构造函数的注入 三、Setter注入 四、三种注入的优缺点分析&#xff08;面试题&#xff09; 1、属性注入 优点&#xff1a; 缺点&#xff1a; 2、构造方法注入&#xff08;Spring4.X推荐&#xff09; 优点&#x…