MyBatis 动态SQL使用

news2024/12/26 22:40:22

动态 sql 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接。
 

1.<if>标签

 

 

 

 

 运行结果:

 

 2.<trim>标签

之前的插⼊⽤户功能,只是有⼀个 photo 字段可能是选填项,如果有多个字段,⼀般考虑使⽤<trim>标签结合<if>标签,对多个字段都采取动态⽣成的⽅式。

<trim>标签中有如下属性:

  • prefix:表示整个语句块,以prefix的值作为前缀
  • suffix:表示整个语句块,以suffix的值作为后缀
  • prefixOverrides:表示整个语句块要去除掉的前缀
  • suffixOverrides:表示整个语句块要去除掉的后缀
     


 

 

 

运行结果:

 

在以上 sql 动态解析时,会将第⼀个 <trim> 部分做如下处理:

  • 基于 prefix 配置,开始部分加上 (
  • 基于 suffix 配置,结束部分加上 )
  • 多个 <if>组织的语句都以 , 结尾,在最后拼接好的字符串还会以 , 结尾,会基于 suffixOverrides 配置去掉最后⼀个 ,
  • 注意 <if test=“createTime != null”> 中的 createTime 是传⼊对象的属性

 

 3.<where>标签

传⼊的⽤户对象,根据属性做where条件查询,⽤户对象中属性不为 null 的,都为查询条件。

 

 

 

 

 

运行结果:

 

 以上<where>标签也可以使⽤ <trim prefix="where" prefixOverrides="and"> 替换。

  

4.<set>标签

 

 

 

 

 

运行结果:

5.<foreach>标签
对集合进⾏遍历时可以使⽤该标签。<foreach>标签有如下属性:

  • collection:绑定⽅法参数中的集合,如 List,Set,Map或数组对象
  • item:遍历时的每⼀个对象
  • open:语句块开头的字符串
  • close:语句块结束的字符串
  • separator:每次遍历之间间隔的字符串
     

 

 

 

 

  

 

 运行结果:

 

 

 

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

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

相关文章

VS Code安装教程

一、下载 1、官网 下载地址 2、下载 根据自己电脑型号下载&#xff0c;此处以Windows为例。 二、安装 1、下载完成后&#xff0c;直接点击安装包安装&#xff0c;即可。 2、开始安装&#xff0c;然后下一步 3、可以在此处自定义地址&#xff0c;然后下一步 4、默认设置&am…

数据结构课程设计

数据结构课程设计 文章目录数据结构课程设计1.1问题描述1.2需求分析1.3概要设计1.4详细设计1.5调试分析1.6测试结果1.7参考文献1.8源码1.1问题描述 编制一个能演示执行集合的交、并和差运算的程序。 要求&#xff1a; 集合元素用小写英文字母&#xff0c;执行各种操作应以对话…

iOS 系统校园无线WIFI认证上网指南

无为WiFi介绍一下IOS手机怎么连接校园网&#xff0c;本介绍为普通途径连接使用校园网&#xff0c;想了解绕过校园网请看其他贴文。1. 打开无线网络&#xff08;WLAN&#xff09;开关2. 连接校园无线WiFi网络进入“设置”->“无线局域网”->在无线WiFi信号列表中选择“SWJ…

【从零开始学习深度学习】40. 算法优化之AdaGrad算法介绍及其Pytorch实现

之前介绍的梯度下降算法中&#xff0c;目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。例如&#xff0c;假设目标函数为fff&#xff0c;自变量为一个二维向量[x1,x2]⊤[x_1, x_2]^\top[x1​,x2​]⊤&#xff0c;该向量中每一个元素在迭代时都使用相同的…

线程安全详解

线程安全 线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中&#xff0c;线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行&#xff0c;不会出现数据污染等意外情况。 多个线程访问同一个对象时&#xff0c;如…

【docker11】docker安装常用软件

docker安装常用软件 1.安装软件说明 框架图 总体步骤&#xff1a; 搜索镜像拉去镜像查看镜像启动镜像 - 服务端口映射停止容器移除容器 1.安装tomcat docker hub上查找tomcat镜像 从docker hub上拉取tomcat镜像到本地 docker images查看是否有拉取到的tomcat 使用to…

Spring Security 导致 Spring Boot 跨域失效问题

1、CORS 是什么首先我们要明确&#xff0c;CORS 是什么&#xff0c;以及规范是如何要求的。这里只是梳理一下流程。CORS 全称是 Cross-Origin Resource Sharing&#xff0c;直译过来就是跨域资源共享。要理解这个概念就需要知道域、资源和同源策略这三个概念。域&#xff0c;指…

sahrding-jdbc的雪花算法取模为0或1的问题

工作时无意间发现sahrding-jdbc使用雪花算法生成的id 在某一业务分库分表 永远在那两个库表里面,排查后这里做下分享 环境、配置、问题介绍 16库16表使用的是org.apache.shardingsphere.core.strategy.keygen下面generateKey生成id分库表算法是对16取模生成数据永远在0库0表 0…

如何有效的防护暴力破解和撞库攻击

在网络威胁领域&#xff0c;暴力破解攻击仍然是网络犯罪分子非常喜爱且有利可图的攻击方法。&#xff0c;黑客通过收集互联网已泄露的用户和密码信息&#xff0c;生成对应的字典表&#xff0c;由于许多用户重复使用相同的用户名和密码&#xff0c;攻击者可以使用撞库攻击获得对…

前缀和算法

目录1.概述2.代码实现2.1.一维前缀和2.2.二维前缀和3.应用本文参考&#xff1a; LABULADONG 的算法网站 1.概述 前缀和算法分为一维和二维&#xff0c;一维前缀和可以快速求序列中某一段的和&#xff0c;而二维前缀和可以快速求一个矩阵中某个子矩阵的和。 2.代码实现 2.1.一…

约拍小程序开发,优化约拍产业路径

随着网红、直播经济的发展&#xff0c;年轻群体对于拍摄服务的需求正在急速增长&#xff0c;与此同时该群体用户又极具个性&#xff0c;很多传统影楼拍摄价格高、拍摄风格固定化、等待时间久&#xff0c;个人摄影师宣传推广难度又大&#xff0c;导致拍摄需求被抑制&#xff0c;…

_Linux多线程-基础篇

文章目录1. 什么是线程Linux中的线程叫做轻量级进程&#xff08;LWP&#xff09;2. 线程的优点3. 线程的缺点4. 线程异常5. 线程用途6. Linux进程VS线程单进程7. 总结线程在进程内部执行是OS调度的基本单位。不同视角看待进程轻量级进程1. 什么是线程 在一个程序里的一个执行路…

【Cfeng Work】 Open API的intro和 梳理

OpenAPI 开放平台 内容管理Open API intro腾讯云OpenAPIOpenAPI请求API密钥管理云API签名过程拼接规范请求串 CanonicalRequest拼接待签名字符串计算签名拼接到Authorization中云API签名失败规范Token 和 长期密钥公共参数OpenApi设计AppId、AppSecretsign签名timestamp 时间戳…

制造服务行业需要项目管理软件吗?

伴随着时代的快速发展&#xff0c;电子制造服务行业也正在飞速发展&#xff0c;在日新月异得时代步伐下&#xff0c;科学得管理方法和现代化得管理工具相结合&#xff0c;保证企业得进步与发展。项目管理工具通过构造高效统一的项目管理平台&#xff0c;优化企业管理中存在的问…

win10 conda安装labme安装和使用

1、安装conda 在WIN10中配置conda 1.1miniconda下载 https://docs.conda.io/en/latest/miniconda.html 可以任意选择对应的版本&#xff0c;安装时选择配置路径&#xff0c;以免后期重复配置环境。 1.2.2 在环境变量中添加路径 Win R&#xff0c;打开运行&#xff0c;输入…

在ubuntu系统上用pyinstaller加密打包yolov5项目代码的详细步骤

目录0. 背景1. 创建虚拟环境2. pyinstaller打包2.1. 生成并修改spec文件2.2. 重新生成二进制文件3. 测试4. 加密打包4.1. 创建入口函数main.py4.2. 修改detect.py4.3. 加密生成main.spec文件4.4. 修改main.spec文件4.5. 生成二进制文件4.6. 测试0. 背景 最近需要在ubuntu 18.0…

Payso×OceanBase:云上拓新,开启云数据库的智能托管

日前&#xff0c;聚合支付厂商 Payso&#xff08; 独角鲨北京科技有限公司&#xff09;的平台、交易系统引入 OceanBase 原生分布式数据库&#xff0c;实现显著降本增效—— 硬件成本降低 20&#xff5e;30%&#xff0c;查询效率提升 80%&#xff0c;执行效率提升了 30%&#x…

学习IB生物,我们需要知道什么知识点?

学习IB课程的很多同学应该都听说过一个说法&#xff1a;IB生物算是理科中的文科&#xff0c;没有公式推导&#xff0c;只有大量需要记忆的内容&#xff0c;不需要用学习理科的思维去学习&#xff0c;其实这种观点是有误区的。实际上&#xff0c;学习生物这门课将会面对的是一个…

01背包问题详解

目录 1.1二维dp数组 1.2一维dp数组改进 1.3相关例题 1.3.1分割等和子集 1.3.2一和零 1.1二维dp数组 概述&#xff1a;背包的最大重量是固定的&#xff0c;物品的数量&#xff0c;重量也是固定的&#xff0c;并且物品只能放一次&#xff0c;可以选择放或者不放&#xff0c…

Redis 核心原理串讲(中),架构演进之高可用

文章目录Redis 核心原理总览&#xff08;全局篇&#xff09;前言一、持久化1、RDB2、AOF3、AOF 重写4、混合持久化5、对比二、副本1、同步模式2、部分重同步三、哨兵1、核心能力2、节点通信总结Redis 核心原理总览&#xff08;全局篇&#xff09; 正文开始之前&#xff0c;我们…