当前位置: 首页 > news >正文

Mybatis 9种动态 sql 标签使用

MyBatis提供了9种动态SQL标签:trim、where、set、foreach、if、choose、when、otherwise、bind;

1.if 标签

<select id="getUser">select * from User<where><if test=" age != null ">and age > #{age}</if><if test=" name != null ">and name like concat(#{name},'%')</if></where>
</select>

2.choose 标签、when 标签、otherwise 标签

<select id="getUser">select * from User<where><choose><when test=" age != null ">and age > #{age}</when><when test=" name != null ">and name like concat(#{name},'%')</when><otherwise>and sex = '女'</otherwise></choose></where>
</select>

3.foreach 标签

<select id="findAll">select  * from user where ids in<foreach collection="list"item="item" index="index"open="(" separator="," close=")">#{item}</foreach>
</select>最终拼接完整的语句就变成:
select  * from user where ids in (1,2,3,...,100);当然你也可以这样编写:
<select id="findAll">select  * from user where<foreach collection="list"item="item" index="index"open=" " separator=" or " close=" ">id = #{item}</foreach>
</select>最终拼接完整的语句就变成:
select  * from user where id =1 or id =2 or id =3  ... or id = 100;

4.where 标签、set 标签

<select id="getUser">select * from User<where><if test=" age != null ">and age > #{age}</if><if test=" name != null ">and name like concat(#{name},'%')</if></where>
</select>
<update id="updateUser">update user<set><if test="age !=null">age = #{age},</if><if test="username !=null">username = #{username},</if><if test="password !=null">password = #{password},</if></set>where id =#{id}
</update>注意,set 标签之所以能够支持去除前缀逗号或者后缀逗号,
是由于其在构造 trim 标签的时候进行了前缀后缀的去除设置,而 where 标签在构造 trim 标签的时候就仅仅设置了前缀去除。

5.trim 标签

<trim prefix="SET" prefixOverrides="," >...
</trim>或者<trim prefix="SET" suffixesToOverride="," >...
</trim>由于 where 标签和 set 标签这两种 trim 标签变种方案已经足以满足我们实际开发需求,所以直接使用 trim 标签的场景实际上不太很多(其实是我自己使用的不多,基本没用过)。

6.bind 标签

平时你使用 mysql 都是如何拼接模糊查询 like 语句的 ( oracle 不支持)
select * from user where name like concat('%',#{name},'%')<select id="selecUser"><bind name="myName" value="'%' + _parameter.getName() + '%'" />SELECT * FROM userWHERE name LIKE #{myName}
</select>无论使用哪种数据库,这个模糊查询的 Like 语法都是支持的

拓展:sql标签 + include 标签

<!-- 可复用的字段语句块 -->
<sql id="userColumns">id,username,password
</sql>
查询或插入时简单复用:<!-- 查询时简单复用 -->
<select id="selectUsers" resultType="map">select<include refid="userColumns"></include>from user
</select>

相关文章:

Mybatis 9种动态 sql 标签使用

MyBatis提供了9种动态SQL标签&#xff1a;trim、where、set、foreach、if、choose、when、otherwise、bind&#xff1b; 1.if 标签 <select id"getUser">select * from User<where><if test" age ! null ">and age > #{age}</if…...

OpenHarmony(鸿蒙南向)——平台驱动开发【PIN】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 PIN即管脚控制器&#xff0c;用于统一管理各SoC的…...

南平自闭症寄宿制学校:让孩子自信绽放

在繁华与喧嚣交织的都市之中&#xff0c;有一片静谧而充满希望的土地——广州星贝育园自闭症儿童寄宿制学校&#xff0c;这里不仅是知识的殿堂&#xff0c;更是自闭症儿童心灵成长的温馨家园。星贝育园&#xff0c;以其独特的教育理念与细致入微的关怀&#xff0c;为这些特殊的…...

汽车总线之---- LIN总线

Introduction LIN总线的简介&#xff0c;对于传统的这种点对点的连接方式&#xff0c;我们可以看到ECU相关的传感器和执行器是直接连接到ECU的&#xff0c;当传感器和执行器的数量较少时&#xff0c;这样的连接方式是能满足要求的&#xff0c;但是随着汽车电控功能数量的不断增…...

Android开发MPAndroidChart两条折线图

Android开发MPAndroidChart两条折线图 Android开发两条折线图效果&#xff0c;还是有一定难度的&#xff0c;难点它的起点不是坐标0的开始&#xff0c;还有数值上有背景图 一、思路&#xff1a; 用的是MPAndroidChart的BarChart 二、效果图&#xff1a; 三、关键代码&#…...

HTML-ES6.0核心技术

1.ES6简介 ECMAScript 6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准&#xff0c;已经在2015年6月正式发布了。它的目标&#xff0c;是使得 JavaScript 语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语言。ECMAScript 和 JavaScri…...

车间调度问题数学建模与CPLEX优化

完成了这些基础研究工作&#xff0c;整理成文档以供参考 序言... i 第一章 引言... 1 1.1 车间调度问题概述... 1 1.2 车间调度问题分类表示法... 5 1.3 车间调度对制造企业的作用... 6 1.4 本章小结... 7 第二章 CPLEX基础... 8 2.1 CPLEX概述... 8 2.1.1 CPLEX简介.…...

< 基础物理 >

SI国际单位制 常见的公制单位 为什么需要单位&#xff0c;是统一衡量的标准 通过国际单位&#xff0c;以及单位的拓展&#xff0c;以及单位的组合&#xff0c;形成一系列新的测量单位 面积 m^2 速率 m/s 米每二次方秒&#xff0c;m / s, delta表示增量, 每秒移动多少米 加…...

【web开发】Spring Boot 快速搭建Web项目(三)

Date: 2024.08.31 18:01:20 author: lijianzhan 简述&#xff1a;根据上篇原文Spring Boot 快速搭建Web项目&#xff08;二&#xff09;&#xff0c;由于已经搭建好项目初始的框架&#xff0c;以及自动创建了一个启动类文件&#xff08;TestWebApplication.java&#xff09; …...

无人机之战斗机的详解!

一、高性能飞行能力 高速飞行&#xff1a;具备较高的巡航速度和最大飞行速度&#xff0c;以便快速抵达任务区域并灵活应对战场情况。 长航程&#xff1a;拥有足够的航程以执行远程任务&#xff0c;覆盖广阔的作战区域 高升限&#xff1a;能够飞行到较高的高度&#xff0c;以…...

Verilog基础:时序调度中的竞争(四)(描述时序逻辑时使用非阻塞赋值)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 作为一个硬件描述语言&#xff0c;Verilog HDL常常需要使用语句描述并行执行的电路&#xff0c;但其实在仿真器的底层&#xff0c;这些并行执行的语句是有先后顺序…...

嵌入式边缘计算软硬件开发“1+X”考证建设方案

一、引言 随着物联网、大数据、人工智能等技术的飞速发展&#xff0c;嵌入式边缘计算作为连接物理世界与数字世界的桥梁&#xff0c;其重要性日益凸显。为了适应行业对高技能人才的需求&#xff0c;推动嵌入式边缘计算技术的普及与应用&#xff0c;特制定本“1X”考证建设方案…...

ES8的Java API client 8.0 简单示例操作 Elasticsearch

1.加入依赖 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.12.2</version></dependency>2.配置类 Slf4j Configuration public class ElasticSearchConfig {Valu…...

多线程CompletableFuture

最近发现同事整理了一个不错的关于CompletableFuture的文档&#xff0c;在这里记录一下&#xff0c;方便以后工作备用 CompletableFuture future CompletableFuture.supplyAsync(() -> {return "开新线程异步执行"; })result future.get(); // 线程阻塞等待结果…...

AR传送门+特定区域显示内容+放大镜 效果着色器使用

AR传送门特定区域显示内容放大镜 效果 关键词&#xff1a;Portal Mask 1、教程链接&#xff1a; AR 传送门教程 Unity - Portal Mask Implementation - Part 4_哔哩哔哩_bilibili 应用案例效果&#xff1a; 2、案例下载地址&#xff1a;使用unity 2021.3.33f1 obi 工具…...

设置Hadoop守护进程的JVM参数

一般情况下我们不去动守护进程的JVM&#xff0c;这里的守护进程说的是NameNode、DataNode等Hadoop服务自己本身的进程。但是有一些特殊情况下需要限制&#xff0c;比如工作中虽然集群中资源队列会有10%左右的预留空余&#xff0c;不过这是整个集群队列的限制&#xff0c;对于Da…...

可视化大屏

可视化大屏 是一种利用计算机图形学技术&#xff0c;将复杂的数据和信息转换为直观的可视化图形&#xff0c;以呈现数据信息的工具。它不仅在电影中常见&#xff0c;而且已经实实在在地被应用在商业、金融、制造等各个行业的业务场景中&#xff0c;成为大数据分析和展示的重要工…...

pytest框架

pytest测试框架 单元测试框架定义&#xff1a;针对软件开发最小的单元&#xff08;函数&#xff0c;方法&#xff09;进行正确性位置测试 单元测试框架&#xff1a;java&#xff08;junit&#xff0c;testing&#xff09;python&#xff08;unittest&#xff0c;pytest&#…...

基于大数据的亚健康人群数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

黄金短线交易策略:波动中的高效盈利之法

今日&#xff0c;亚市盘初&#xff0c;现货黄金就高位震荡。在昨日金价再度冲高&#xff0c;一度刷新历史高点至2685.49美元&#xff0c;收报2672.25美元。其中主要原因是美国公布了最新的核心PCE&#xff08;个人消费支出&#xff09;物价指数和初请失业金人数等经济数据&…...

构建现代化小说下载解决方案:探索Rust驱动的番茄小说下载器

构建现代化小说下载解决方案&#xff1a;探索Rust驱动的番茄小说下载器 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 在数字阅读日益普及的今天&#xff0c;小说爱好者们面临…...

Wwise与Godot音频集成:专业游戏音频中间件在开源引擎中的实现

1. 项目概述&#xff1a;连接两大巨头的桥梁如果你是一位游戏音频设计师&#xff0c;或者是一位对游戏音频实现有追求的开发者&#xff0c;那么“Wwise”和“Godot”这两个名字对你来说一定不陌生。Wwise是业界顶级的交互式音频中间件&#xff0c;以其强大的音频逻辑编排、动态…...

本地AI对话伴侣实战:Electron+llama.cpp部署与调优指南

1. 项目概述&#xff1a;一个桌面端的本地AI对话伴侣最近在折腾本地大语言模型&#xff08;LLM&#xff09;的时候&#xff0c;发现了一个挺有意思的项目&#xff1a;ItsPi3141/alpaca-electron。简单来说&#xff0c;这是一个用 Electron 框架打包的桌面应用程序&#xff0c;它…...

眉山奶油风家具的实际使用效果如何?奶油风家具

测评主体公示本次测评将对以下品牌进行对比&#xff1a;唯品名居家居、顾家家居、芝华仕、左右沙发、全友家居。所有品牌的测评将遵循统一标准&#xff0c;包括测评维度、动作、环境和数据采集方法。测评维度与标准1. 材质质量动作&#xff1a;检查家具表面材质、内部结构 过程…...

使用 Taotoken 后模型 API 响应延迟与稳定性效果实测观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken 后模型 API 响应延迟与稳定性效果实测观察 作为一名需要频繁调用大模型 API 的开发者&#xff0c;模型服务的响应速…...

从EGO-Planner到集群协同:分布式轨迹优化在无人机编队中的应用

1. 项目概述&#xff1a;从单机到集群的自主飞行进化如果你玩过无人机&#xff0c;或者关注过机器人领域&#xff0c;大概会知道让一台机器在空中自主规划路径、避开障碍物已经是个不小的挑战。那么&#xff0c;想象一下&#xff0c;让一群无人机像鸟群一样&#xff0c;在复杂、…...

AI智能体技能开发实战:从awesome-agent-skills到工程化应用

1. 项目概述&#xff1a;一个智能体技能的知识宝库最近在折腾AI智能体&#xff08;Agent&#xff09;开发&#xff0c;发现一个挺有意思的现象&#xff1a;大家都能用LangChain、AutoGen这些框架搭出个智能体的架子&#xff0c;但真想让这个“智能体”干点具体、有用、甚至有点…...

3步实现网页到Figma设计稿的智能转换:打破开发与设计壁垒

3步实现网页到Figma设计稿的智能转换&#xff1a;打破开发与设计壁垒 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html HTML转Figma工具是一款革命性的Chrome扩展程序&#xff0c;能…...

dingtalk-openclaw-connector:打通钉钉与AI的插件化连接器架构解析

1. 项目概述&#xff1a;一个打通钉钉与AI能力的“连接器”如果你正在企业内部尝试部署AI应用&#xff0c;比如一个能自动处理工单的智能客服&#xff0c;或者一个能帮你分析周报的智能助手&#xff0c;那么你大概率会遇到一个核心难题&#xff1a;如何让AI能力无缝融入员工每天…...

PromptHub:本地优先的提示词管理工具,提升AI应用开发效率

1. 项目概述与核心价值 最近在折腾AI应用开发&#xff0c;特别是基于大语言模型&#xff08;LLM&#xff09;的智能体&#xff08;Agent&#xff09;和自动化流程时&#xff0c;我发现一个普遍存在的痛点&#xff1a; 提示词&#xff08;Prompt&#xff09;的管理与复用 。无…...