【MyBatis】进阶使用 (动态SQL)

server/2024/9/25 23:12:18/

动态SQL

  • \<if>
  • \<trim>
  • \<where>
  • \<set>
  • \<foreach>
  • \<include>

在填写表单时,有些数据是非必填字段(例如性别,年龄等字段),那就需要在接收到参数时判断,根据参数具体的情况来生成相应的 SQL,如果参数不为 null,就插入到数据里,如果参数为 null,就根据具体表设计而定。

<if>

使用 <if> 标签可以完成对接收到的参数进行判断。
首先看一组都不为空的情况下:
在这里插入图片描述

再看当性别为 null 的情况:

在这里插入图片描述

此时我们就需要使用 <if> 标签对接收到的参数进行判断,如果不为空,就加入到数据库
在这里插入图片描述

数据库也能正常插入数据:

在这里插入图片描述

<trim>

上述只判断了一个字段 gender,如果有更多的字段则需要使用多个 <if> 标签:
在这里插入图片描述

若字段 phone 为 null,则会出现下面这个情况:

在这里插入图片描述

此时,我们就需要 <trim> 标签了,用来去除不必要的 逗号:

在这里插入图片描述

在 <trim> 标签里还有两个配置,prefix 和 suffix,一个用于补全前缀,一个用于补全后缀:
在这里插入图片描述

<where>

<where> 标签用来去除判断条件里的 and 和 or,若筛选条件都为 null,则会去除 where 关键字。

当两个条件都不为 null 时:

在这里插入图片描述

当其中一个判断条件为 null 时:

在这里插入图片描述

当判断条件全为 null 时:

在这里插入图片描述

<set>

<set> 标签也常用于去除逗号,如果接受到的参数不为 null,则更新数据。
当参数都不为 null 时:

在这里插入图片描述
其中一个为 null 时:

在这里插入图片描述

参数都为 null 时:

在这里插入图片描述

<foreach>

用于对集合进行遍历。
在这里插入图片描述

collection 为方法中的集合
item 为集合中的每个对象
open 为语句块开头的字符串
close 则为语句块结束的字符串
separate 为每次遍历之间间隔的字符串

<include>

在编写 SQL 语句时,可能会存在重复的语句, 为解决这个现象,可以使用 <sql> 标签对相同语句进行封装,再使用 <include> 标签进行引用。
在这里插入图片描述


http://www.ppmy.cn/server/24881.html

相关文章

Docker--compose概述与部署

目录 一、概述 1. Compose简介 1.1 docker compose常用命令 1.2 Compose配置常用字段 2. YAML简介 2.1 YAML支持的数据结构 2.2 YML文件编写注意事项 2.3 Docker Compose文件结构 3. Docker-Compose安装 ​编辑 4.docker Compose撰写nginx 镜像 1. 准备环境 ​编辑…

HaLo-NeRF:利用视觉和语言模型对场景的精准定位和细粒度语义理解

包含大量摄影师拍摄的照片的互联网图像集有望实现对大型旅游地标的数字探索。然而&#xff0c;先前的工作主要集中在几何重建和可视化上&#xff0c;忽略了语言在为导航和细粒度理解提供语义界面方面的关键作用。 项目&#xff1a;HaLo-NeRF: Learning Geometry-Guided Semant…

MongoDB聚合运算符:$size

MongoDB聚合运算符&#xff1a;$size 文章目录 MongoDB聚合运算符&#xff1a;$size语法使用举例 $size聚合运算符返回数组中元素的数量。 语法 { $size: <expression> }<expression>为可解析为数组的表达式。 使用 $size 的参数必须解析为数组。如果 $size 的参…

vue2 点击预览本地 word excle pdf 文件

安装 考虑到三个包加一起的话会比较大&#xff0c;所以拆成了三个包&#xff0c;需要哪个自行安装即可。 //docx文档预览组件 npm install vue-office/docx//excel文档预览组件 npm install vue-office/excel//pdf文档预览组件 npm install vue-office/pdf npm i --save vue…

【2024-4-28-001】我遇到的CMake语句

2024年4月28日&#xff0c;周日下午 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE})这段语法是用于设置 CMake 构建过程中生成的可执行文件&#xff08;运行时文件&#xff09;的输出目录。 让我逐步解释它&#xff1a; set: 这是 CMake …

富格林:可信方略杜绝交易虚假

富格林指出&#xff0c;黄金市场是一个极具诱惑力的市场&#xff0c;它是在一个大家共同认可的游戏规则下&#xff0c;凭借自己可信的决策、判断来进行交易的一种投资市场。黄金市场不断有新手投资者的加入&#xff0c;但是要真正在该市场上获利&#xff0c;杜绝虚假套路是一个…

form1弹出子窗体form2,拖动子窗体判断是否离开父窗体区域,含源码(学习笔记)

一、效果&#xff08;进入和离开&#xff09; 子窗体到达父窗体边缘时变色。 二、代码分析 判断父窗体的目的&#xff0c;可以控制子窗体要随父窗体走。上面代码需要加以处理。 如&#xff1a;this.Location new Point(parentPoint.X distanceFromEdge, this.Location.Ydis…

苹果公司大量订购电容按钮组件,或将用于即将推出的iPhone 16系列

据外媒报道&#xff0c;苹果公司已经从供应商订购了大量电容按钮组件&#xff0c;这些组件据称将用于即将推出的iPhone 16系列。根据《台湾经济日报》的一份报告&#xff0c;该订单包括系统级封装(SIP)模块&#xff0c;模块将用于将电容组件与两个Taptic Engine电机集成在一起。…