在Mybatis中写动态sql这些标签:if、where、set、trim、foreach、choose的作用是什么,怎么用?
在 MyBatis 中,您可以使用动态 SQL 标签来构建灵活的 SQL 查询,以根据不同的条件生成不同的查询语句。以下是这些标签的作用和用法:
1. **`<if>` 标签:** 用于根据某个条件动态地包含或排除 SQL 片段,test:可以写条件。
示例用法:
```xml
<select id="getUserList" parameterType="Map" resultMap="UserResultMap">
SELECT * FROM users
<where>
<if test="username != null">AND username = #{username}</if>
<if test="email != null">AND email = #{email}</if>
</where>
</select>
```
2. **`<where>` 标签:** 用于在 SQL 查询中生成 `WHERE` 子句,并自动处理不必要的 `AND` 或 `OR`。
示例用法:
```xml
<select id="getUserList" parameterType="Map" resultMap="UserResultMap">
SELECT * FROM users
<where>
<if test="username != null">AND username = #{username}</if>
<if test="email != null">AND email = #{email}</if>
</where>
</select>
```
3. **`<set>` 标签:** 用于在更新语句中动态生成 `SET` 子句,根据传入的参数来更新特定的列。
示例用法:
```xml
<update id="updateUser" parameterType="User">
UPDATE users
<set>
<if test="username != null">username = #{username},</if>
<if test="email != null">email = #{email},</if>
</set>
WHERE id = #{id}
</update>
```
4. **`<trim>` 标签:** 用于在 SQL 语句中修剪多余的空白字符和逗号,并可以根据条件自定义修剪的内容。
prefix:在sql动态条件加前缀
suffix:在sql动态条件加后缀
prefixOverrides:删除sql动态条件前缀内容
suffixOverrides:删除sql动态条件后缀内容
示例用法:
```xml
<select id="getUserList" parameterType="Map" resultMap="UserResultMap">
SELECT * FROM users
<where>
<trim prefix="AND" prefixOverrides="OR">
<if test="username != null">OR username = #{username}</if>
<if test="email != null">OR email = #{email}</if>
</trim>
</where>
</select>
```
5. **`<foreach>` 标签:** 用于循环遍历集合或数组,生成多个 SQL 片段。
示例用法:
```xml
<select id="getUserListByIds" parameterType="List" resultMap="UserResultMap">
SELECT * FROM users
WHERE id IN
<foreach collection="list" item = "listParam" open = "(" separator = "," close = ")">
#{listParam}
</foreach>
</select>
```
6. **`<choose>` 标签:** 类似于 Java 中的 `switch` 语句,根据条件选择其中一个分支进行处理。
choose(类似switch)
when标签: 类似switch的case分支 , 需要写test属性
otherwise(否则): 类似switch的default分支
示例用法:
```xml
<select id="getUserList" parameterType="Map" resultMap="UserResultMap">
SELECT * FROM users
<where>
<choose>
<when test="username != null">AND username = #{username}</when>
<when test="email != null">AND email = #{email}</when>
<otherwise>AND status = 1</otherwise>
</choose>
</where>
</select>
```
这些动态 SQL 标签允许您在 MyBatis 中根据不同的条件构建动态的查询语句,以实现更灵活的数据库操作。您可以根据具体的业务需求选择适当的标签来创建定制的查询逻辑。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
在Mybatis中写动态sql这些标签:if、where、set、trim、foreach、choose的作用是什么,怎么用?
在 MyBatis 中,您可以使用动态 SQL 标签来构建灵活的 SQL 查询,以根据不同的条件生成不同的查询语句。以下是这些标签的作用和用法: 1. **<if> 标签:** 用于根据某个条件动态地包含或排除 SQL 片段,test:可以写…...
![](https://www.ngui.cc/images/no-images.jpg)
7 Python的模块和包
概述 在上一节,我们介绍了Python的异常处理,包括:异常、异常处理、抛出异常、用户自定义异常等内容。在这一节中,我们将介绍Python的模块和包。Python的模块(Module)和包(Package)是…...
![](https://www.ngui.cc/images/no-images.jpg)
【JavaWeb 篇】使用Servlet、JdbcTemplate和Durid连接池实现用户登录功能与测试
在现代Web应用程序开发中,用户登录功能是基础中的基础。它为用户提供了安全访问系统的途径。本篇博客将引导您通过使用Servlet、Spring框架的JdbcTemplate以及Durid连接池,来构建一个完整的用户登录功能。我们将详细展示每个部分的代码,并解释…...
![](https://img-blog.csdnimg.cn/430fd5b6362d48c281827ddc6a56789d.gif)
【Unity3D赛车游戏】【六】如何在Unity中为汽车添加发动机和手动挡变速?
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
![](https://img-blog.csdnimg.cn/018351f0fbbc449682b7a646226f988b.png)
【Go 基础篇】切片:Go语言中的灵活数据结构
在Go语言中,切片(Slice)是一种强大且灵活的数据结构,用于管理和操作一系列元素。与数组相比,切片的大小可以动态调整,这使得它成为处理动态数据集合的理想选择。本文将围绕Go语言中切片的引入,介…...
![](https://img-blog.csdnimg.cn/b94bc8ab962541bfb10c4f6b8e01d84d.png)
龙芯2K1000LA移植交叉编译环境以及QT
嵌入式大赛结束了,根据这次比赛中记的凌乱的笔记,整理了一份龙芯2K1000LA的环境搭建过程,可能笔记缺少了一部分步骤或者错误,但是大致步骤可以当作参考。 一、交叉编译工具链 下载连接:龙芯 GNU 编译工具链 | 龙芯开…...
![](https://www.ngui.cc/images/no-images.jpg)
javaee spring依赖注入之spel方式
spring依赖注入之spel方式 <dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.3.18.RELEASE</version></dependency>package com.test.pojo;import java.util.List; …...
![](https://img-blog.csdnimg.cn/f98b35ab934e43f29ac32a1790a447f8.png)
【Java集合学习1】ArrayList集合学习及集合概述分析
JavaArrayList集合学习及集合学习概述 一、Java集合概述 Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Col…...
![](https://img-blog.csdnimg.cn/58e8c575b4794f4d9fbe6bf2a585a4fa.png)
TouchGFX之调试
DebugPrinter类是一种在显示屏上打印调试消息的简单方法,无需向屏幕添加控件。 在使用DebugPrinter之前,需要分配一个实例并将其传递给Application类,且DebugPrinter实例必须兼容所使用的LCD类。 该表列出了DebugPrinter类名称: …...
![](https://img-blog.csdnimg.cn/5e52d73c0171416388af6fcd28b4461d.png)
C# winform加载yolov8模型测试(附例程)
第一步:在NuGet中下载Yolov8.Net 第二步:引用 using Yolov8Net; 第三步:加载模型 private IPredictor yolov8 YoloV8Predictor.Create("D:\\0MyWork\\Learn\\vs2022\\yolov_onnx\\best.onnx", mylabel); 第四步:图…...
![](https://img-blog.csdnimg.cn/b5e77fc325ae4c49aadafbbadc86e53c.png)
浙大陈越何钦铭数据结构07-图6 旅游规划
题目: 有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。 输入…...
![](https://www.ngui.cc/images/no-images.jpg)
VUE笔记(七)项目登录
1、安装elementui 在终端执行 vue add element 注册组件 如果要使用哪个组件,大家需要在plugins/element.js中注册该组件 import Vue from vue import { Button } from element-ui Vue.use(Button) 在页面组件中使用 <el-button type"primary"&…...
![](https://img-blog.csdnimg.cn/0dfba4eb3327470b9af7ec37d8983b30.png)
大语言模型之六- LLM之企业私有化部署
数据安全是每个公司不得不慎重对待的,为了提高生产力,降本增效又不得不接受新技术带来的工具,私有化部署对于公司还是非常有吸引力的。大语言模型这一工具结合公司的数据可以大大提高公司生产率。 私有化LLM需要处理的问题 企业内私有化LLM…...
![](https://img-blog.csdnimg.cn/img_convert/e3f4155e2501295245d953a9dd6ad8c3.png)
Python3 列表
Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。 Python 有 6 个序列的内置类型,但最常见的是列表和元组。 列表都可以进…...
![](https://img-blog.csdnimg.cn/f736d1d84b714bf7896416644131b925.gif)
OpenCV基础知识(8)— 图形检测
前言:Hello大家好,我是小哥谈。图形检测是计算机视觉的一项重要功能。通过图形检测可以分析图像中可能存在的形状,然后对这些形状进行描绘,例如搜索并绘制图像的边缘,定位图像的位置,判断图像中有没有直线、…...
![](https://img-blog.csdnimg.cn/20200224221417657.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTYzNjMw,size_16,color_FFFFFF,t_70)
Java虚拟机
文章目录 JVM运行时数据区域HotSpot虚拟机对象探秘实战:OutOfMemoryError异常 JVM 运行时数据区域 HotSpot虚拟机对象探秘 实战:OutOfMemoryError异常...
![](https://www.ngui.cc/images/no-images.jpg)
c++学习 之 函数重载注意事项
文章目录 引用作为函数重载的条件函数重载遇到默认参数 引用作为函数重载的条件 #include <iostream> using namespace std; void fun(int &a) {cout << "void fun(int & a)" << endl; }void fun(const int &a) {cout << "…...
![](https://img-blog.csdnimg.cn/a48c273754c24bd391a567ed65bf7792.png)
2023-08-27 LeetCode每日一题(合并区间)
2023-08-27每日一题 一、题目编号 56. 合并区间二、题目链接 点击跳转到题目位置 三、题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组&#…...
![](https://img-blog.csdnimg.cn/2bd17df56e814066bcc6a68b76a6afbd.png)
C#,数值计算——调适数值积分法(adaptive quadrature)的计算方法与源程序
1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 调适数值积分法 /// adaptive quadrature /// </summary> public class Adapt { private double x1 { get; } 0.942882415695480; private …...
![](https://img-blog.csdnimg.cn/e7520ca25bc54fe594e1371cd81bca92.png)
微信小程序发布迭代版本后如何提示用户强制更新新版本
在点击小程序发布的时候选择,升级选项 之前用户使用过的再打开小程序页面就会弹出升级弹窗modal...
![](https://img-blog.csdnimg.cn/58e7a1e876e545468292b60cca71872f.gif)
星际争霸之小霸王之小蜜蜂(七)--消失的子弹
目录 前言 一、删除子弹 二、限制子弹数量 三、继续重构代码 总结 前言 昨天我们已经让子弹飞了起来,但是会面临一个和之前小蜜蜂一样的问题,小蜜蜂的行动应该限制在窗口内,那么子弹也是有相同之处,也需要限制一个移动范围&…...
![](https://img-blog.csdnimg.cn/dd3ebcb4094f47299852cbc52d397063.png)
Hadoop入门机安装hadoop
0目录 1.Hadoop入门 2.linux安装hadoop 1.Hadoop入门 定义 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 优势 高可靠性:Hadoop底层维护多…...
![](https://www.ngui.cc/images/no-images.jpg)
cookie技术介绍
title: cookie技术 date: 2023-08-27 21:34:19 tags: [cookie, 网络, http] categories: 网络 我们经常说的cookie缓存数据,允许cookie是什么意思? Cookie也被称作Cookies,它是一种让网站的服务器端可以把少量数据存储在客户端的硬盘或内存中&#x…...
![](https://img-blog.csdnimg.cn/img_convert/98c8fd72c67f3e6435568eee950fdfb8.png)
网络摄像头:SparkoCam Crack
SparkoCam 网络摄像头软件 SparkoCam 是一款网络摄像头和视频效果软件,用于广播实时网络摄像头效果并将其应用到视频聊天和录音中。 使用佳能/尼康数码单反相机作为常规网络摄像头通过向实时视频聊天和视频录制添加酷炫的网络摄像头效果和图形来增强 USB 网络摄像…...
![](https://img-blog.csdnimg.cn/c28bc8b17f744084b71dd62d8ecba712.png)
【缓存设计】记一种不错的缓存设计思路
文章目录 前言场景设计思路小结 前言 之前与同事讨论接口性能问题时听他介绍了一种缓存设计思路,觉得不错,做个记录供以后参考。 场景 假设有个以下格式的接口: GET /api?keys{key1,key2,key3,...}&types{1,2,3,...}其中 keys 是业务…...
![](https://www.ngui.cc/images/no-images.jpg)
微信小程序大学校园二手教材与书籍拍卖系统设计与实现
摘 要 随着应用技术的发展以及电子商务平台的崛起,利用线上平台实现的二手交易为传统的二手交易市场注入了新的生机,大学校园内的新生和应届毕业生的相互交替产生了巨大的二手交易空间,同时考虑到环保和资源再利用,大学校园的书籍…...
![](https://img-blog.csdnimg.cn/47c8fa33d5824172866ac85238d6ecf8.jpeg#pic_center)
涛然自得周刊(第06期):韩版苏东坡的突围
作者:何一涛 日期:2023 年 8 月 27 日 涛然自得周刊主要精选作者阅读过的书影音内容,不定期发布。历史周刊内容可以看这里。 电影 兹山鱼谱 讲述丁若铨因政治事件被贬黜到了遥远的黑山岛。来到岛上后,丁被大自然环境疗愈&#…...
![](https://img-blog.csdnimg.cn/348c18dddd644dc68ff6f7ccd8f8faec.png)
DOCKER 部署 webman项目
# 设置基础镜像 FROM php:8.2-fpm# 安装必要的软件包和依赖项 RUN apt-get update && apt-get install -y \nginx \libzip-dev \libpng-dev \libjpeg-dev \libfreetype6-dev \&& rm -rf /var/lib/apt/lists/*# 安装 PHP 扩展 RUN docker-php-ext-configure gd …...
![](https://img-blog.csdnimg.cn/b887830ef19c4be3a2e8a3abbc13b764.png)
LLMs:LangChain-Chatchat(一款可实现本地知识库问答应用)的简介、安装、使用方法之详细攻略
LLMs:LangChain-Chatchat(一款可实现本地知识库问答应用)的简介、安装、使用方法之详细攻略 目录 LangChain-Chatchat的简介 1、原理图解 2、文档处理实现流程 1、模型支持 (1)、LLM 模型支持 (2)、Embedding 模型支持 LangChain-Chatchat的安装 1、镜像部署…...
![](https://img-blog.csdnimg.cn/37af8914e69a4f3e9b53262e42b6b65b.png)
Qt 解析XML文件 QXmlStreamReader
如何使用QXmlStreamReader来解析格式良好的XML,Qt的文档中指出,它是一种更快、更方便的Qt自己的SAX解析器(QXmlSimpleReader)的替代,它也较快,在某种情况下,比DOM(QDomDocument&…...
![](/images/no-images.jpg)
win主机 wordpress静态/推广app佣金平台正规
刑法规定,公司、企业和其他单位的工作人员利用职务上的便利,非法侵占单位的财产,处五年以下有期徒刑或者拘役;情节严重的,可以并处五年以上有期徒刑。关于侵吞公司财产的会被判多少年的问题,合肥律师已经整…...
![](https://images2015.cnblogs.com/blog/859549/201704/859549-20170418221518118-37917214.png)
公司网站制作效果怎么样/百度allin 人工智能
本文提要 前文也提到过druid不仅仅是一个连接池技术,因此在将整合druid到项目中后,这一篇文章将去介绍druid的其他特性和功能,作为一个辅助工具帮助提升项目的性能,本文的重点就是两个字:监控。 我的github地址点这里 …...
![](https://images2017.cnblogs.com/blog/1240530/201801/1240530-20180130095955781-184045855.jpg)
wordpress显示图片/如何免费做视频二维码永久
Transaction Flow 本文概述了在标准资产交换过程中发生的事务机制。这个场景包括两个客户,A和B,他们在购买和销售萝卜(产品)。他们每个人在网络上都有一个peer,通过这个网络,他们发送自己的交易,…...
![](/images/no-images.jpg)
融水县建设局网站/公司宣传软文
前端技术周刊 2018-06-09 前端快爆 生态更新 Git 发现一个关于 Submodule 的安全漏洞,将可能导致任意代码执行漏洞,将 Git 客户端升级到 2.17.1 即可避免这样的安全问题。? W3C 网络内容可访问性指南的 2.1 版本已经进入 W3C 的推荐状态,新版…...
![](/images/no-images.jpg)
wordpress主题ux/公司网站制作
--在SCOTT用户登陆下的代码/*""号是指返回一行"in"是返回多行*/--空的commit,可以将下面的查询结果窗口去掉;commit;--查询与SCOTT用户同一个部门的用户select * from emp where deptno (select deptno from emp where enameSCOTT);--查询与SC…...
![](https://img-blog.csdnimg.cn/20181228093753142.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RpYW50YW5nXzE5ODY=,size_16,color_FFFFFF,t_70)
注册安全工程师报名入口官网/网络优化的流程
一、什么是微服务 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小…...