Mybaits 动态sql 整理

一  常见的

MyBatis 是一个流行的 Java 数据持久化框架,它提供了灵活的动态 SQL 查询功能,让开发者可以根据需要构建动态的 SQL 查询语句。下面是 MyBatis 中常用的动态 SQL 构建方式:

1. if 元素:用于根据条件判断是否包含某个 SQL 字段或语句。示例:
   ```xml
   <select id="getUserList" resultType="User">
     SELECT * FROM user
     WHERE 1 = 1
     <if test="userName != null">
       AND user_name = #{userName}
     </if>
     <if test="gender != null">
       AND gender = #{gender}
     </if>
   </select>
   ```

2. choose, when, otherwise 元素:用于构建类似于 switch-case 语句的动态 SQL。可以根据条件选择不同的 SQL 语句执行。示例:
   ```xml
   <select id="getUserList" resultType="User">
     SELECT * FROM user
     WHERE 1 = 1
     <choose>
       <when test="userName != null">
         AND user_name = #{userName}
       </when>
       <when test="gender != null">
         AND gender = #{gender}
       </when>
       <otherwise>
         AND status = 'ACTIVE'
       </otherwise>
     </choose>
   </select>
   ```

3. where 元素:用于动态生成 WHERE 子句,并且会自动去除多余的 AND 或 OR。示例:
   ```xml
   <select id="getUserList" resultType="User">
     SELECT * FROM user
     <where>
       <if test="userName != null">
         AND user_name = #{userName}
       </if>
       <if test="gender != null">
         AND gender = #{gender}
       </if>
     </where>
   </select>
   ```

4. set 元素:用于动态生成 UPDATE 语句中的 SET 子句。示例:
   ```xml
   <update id="updateUser" parameterType="User">
     UPDATE user
     <set>
       <if test="userName != null">
         user_name = #{userName},
       </if>
       <if test="gender != null">
         gender = #{gender},
       </if>
     </set>
     WHERE id = #{id}
   </update>
   ```

5. foreach 元素:用于遍历集合或数组,并将集合或数组的元素动态替换进 SQL 语句中。示例:
   ```xml
   <select id="getUserList" resultType="User">
     SELECT * FROM user
     WHERE id IN
     <foreach item="id" collection="ids" open="(" separator="," close=")">
       #{id}
     </foreach>
   </select>
   ```

除了上述的元素,MyBatis 还提供了许多其他的动态 SQL 构建方式,如动态拼接 SQL 字符串等。这些方式可以根据实际需求来选择使用,以便构建灵活、可复用的动态 SQL 查询语句。

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

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

相关文章

Web自动化测试怎么做?Web网页测试全流程解析

1、功能测试 web网页测试中的功能测试&#xff0c;主要测试网页中的所有链接、数据库连接、用于在网页中提交或获取用户信息的表单、Cookie 测试等。 &#xff08;1&#xff09;查看所有链接&#xff1a; 测试从所有页面到被测特定域的传出链接。 测试所有内部链接。 测…

设计模式之创建型模式(单例、工厂方法、抽象工厂、原型、建造者)

文章目录 一、设计模式二、设计模式的六大原则三、设计模式分类四、单例设计模式五、工厂方法六、抽象工厂七、原型模式八、建造者模式 一、设计模式 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用…

JSP 设置静态文件资源访问路径

这里 我们先在 WEB目录webapp 下创建一个包 叫 static 就用它来存静态资源 然后 我们扔一张图片进去 我们直接这样写 如下图 找到父级目录 然后寻找下面的 static 下的 img.png 运行代码 很明显 它没有找到 这边 我们直接找到 webapp目录下的 WEB-INF目录下的 web.xml 加入…

CSS中常用的5种颜色单位

css中有丰富多彩的颜色&#xff0c;如何让计算机能知道我们想要的是哪种颜色呢&#xff1f;可以通过以下的颜色单位。 1:在CSS可以直接使用颜色的单词来表示不同的颜色 红色&#xff1a;red 蓝色&#xff1a;blue 绿色&#xff1a;green 黄色&#xff1a;yellow 注意&#…

temu最近数据:拼多多旗下跨境电商平台的业绩持续增长

据最近的报道和数据显示&#xff0c;拼多多旗下的跨境电商平台Temu在2023年第三季度取得了显著的业绩增长。销售额突破50亿美元&#xff0c;市场份额不断扩大&#xff0c;用户数量迅速增长。本文将深入探讨Temu的业绩增长、市场份额、用户增长以及其营销策略。 先给大家推荐一款…

3d家居产品虚拟三维展示提升企业的品牌竞争力

2D展示逐渐难以满足消费者需求&#xff0c;因此基于3D三维展示制作平台将产品或服务以三维形式呈现的3D三维展示更受客户和企业青睐&#xff0c;也大幅提升企业的营销推广效果。那么3D三维展示制作平台如何赋能企业营销推广呢? 首先&#xff0c;3D三维展示制作平台能够提供更加…

Avalonia开发之HelloWrold

前言 本文所有讲解是以VS2022为开发工具&#xff0c;官方提供了VS2022和2019的扩展支持&#xff0c;大家根据自己的是实际情况下载相应的扩展进行安装。 安装扩展 如下图&#xff0c;我们在扩展菜单里面找到扩展管理&#xff0c;如下图&#xff1a; 在扩展管理的搜索栏里面…

【开源项目】Windows串口通信组件 -- Com.Gitusme.IO.Ports.SerialPort

目录 1、项目介绍 2、组件集成 1)下载地址: 2)添加项目依赖

【矩阵论】Chapter 4—特征值和特征向量知识点总结复习

文章目录 1 特征值和特征向量2 对角化3 Schur定理和正规矩阵4 Python求解 1 特征值和特征向量 定义 设 σ \sigma σ为数域 F F F上线性空间 V V V上的一个线性变换&#xff0c;一个非零向量 v ∈ V v\in V v∈V&#xff0c;如果存在一个 λ ∈ F \lambda \in F λ∈F使得 σ (…

一文带你了解Java中synchronized原理

&#x1f308;&#x1f308;&#x1f308;今天给大家分享的是Java中 synchronized 的基本原理 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff…

分享Python给自己写的函数添加注释的小功能

def get_ips(prefix: str, suffix: int) -> List[str]:"""获取 IP 地址段。Args:prefix: IP 地址的前缀。suffix: IP 地址的后缀。Returns:IP 地址列表。"""... """ """ 就是注释开始以及注释结束。 效果&a…

C语言学习笔记之数组篇

数组是一组相同类型元素的集合。 目录 一维数组 数组的创建 数组的初始化 数组的使用 数组在内存中的存储 二维数组 数组的创建 数组的初始化 数组的使用 数组在内存中的存储 数组名 数组名作函数参数 一维数组 数组的创建 type_t arr_name [const_n]; //type_…

华为 ArkTS 边框怎么设置,单边边框怎么设置以及条件设置边框(鸿蒙开发)

一、实例代码&#xff1a; border(params) 接收一个对象参数&#xff0c;对象参数的属性为width?: Lenght&#xff0c;color?: &#xff0c;radius?: Length,style?: BorderStyle 注意&#xff1a;以下实例包含了我说知道的 边框的单位 以及 颜色 的各种用法 Column() {Im…

【独家OD2023C卷真题】20天拿下华为OD笔试【二分查找】2023C-部门人力分配【欧弟算法】全网注释最详细分类最全的华为OD真题题解

题目描述与示例 题目描述 部门在进行需求开发时需要进行人力安排。当前部门需要完成 N 个需求&#xff0c;需求用 requirements[i] 表示&#xff0c;requirements[i] 表示第 i 个需求的工作量大小&#xff0c;单位&#xff1a;人月。这部分需求需要在 M 个月内完成开发&#…

【已解决】MySQL:执行存储过程报错(MySQL字符集和排序方式冲突)

目录 问题现象&#xff1a; 问题分析&#xff1a; 解决方法&#xff1a; 拓展&#xff1a; 1、转换条件两边的字段或值为二进制数据&#xff1a; 2、转换条件两边的字段或值的字符集和排序方式&#xff1a; 3、修改列、表、库的字符集和排序方式 参考链接&#xff1a; 问…

spring webflux文件上传与下载

1、文件上传&#xff1a; Controller&#xff1a; PostMapping("/import")public void importImage(RequestPart("file") FilePart filePart) {imageService.importImage(filePart);}Service&#xff1a; public void importImage(FilePart filePart) {Fi…

java之arraylist的用法

java之arraylist的用法 Java中的ArrayList是一种基于动态数组实现的List接口。它允许使用索引访问和操作元素&#xff0c;并提供了高效的插入、查找和删除操作。 以下是关于Java ArrayList的详细用法介绍&#xff1a; 1&#xff09;创建ArrayList对象&#xff1a; List<S…

微信商城小程序怎么制作?做一个小程序需要什么流程?

小程序商城对商家有哪方面的帮助&#xff1f; 随着移动互联网的快速发展&#xff0c;小程序商城已经成为了越来越多商家的选择。那么&#xff0c;小程序商城到底对商家有哪些方面的帮助呢&#xff1f; 一、提高商家曝光度 在小程序平台上开设自己的小程序商城&#xff0c;可以…

AI之火是如何燎原的?始于马斯克与佩奇的一场激辩

丨划重点 ①在2015年, 马斯克44岁生日派对上&#xff0c;他与谷歌联合创始人佩奇曾就AI产生严重分歧&#xff0c;甚至终结了十多年的友谊。佩奇认为人类最终将与AI机器融合&#xff0c;将会有许多种智能争夺资源, 马斯克则担心机器可能会毁灭人类。 ②在收购AI创企DeepMind时…

acwing1209.带分数暴力与优化(java版)

//n a b / c n是确定的,只需找到其中两个。判断剩下一个数是否满足条件即可 //由题目条件可知,每个数不能重复使用,需要一个st全局数组判断每个数是否使用过 //递归实现排列型枚举,cn ac b //对于枚举出来的每一个a,再去枚举每一个c,再在c的枚举里判断b是否满足条件 //…