【Mybatis】动态SQL标签1

MyBatis之sql拼接 阅读详情

动态SQL

MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。

虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。

动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

1.if的用法举例

我们来实现username的模糊查询:

这里强调几个知识点:

① 记得在接口中加@Param注解,以防止以下异常ReflectionException: There is no getter for property named...

②if标签里的test属性里是用的OGNL表达式,这是apache下的一个标签,用法类似jstl,但有些小差别,具体的内容可以在ognl官网上查询,这里强调一点,有些符号在xml文件里写的时候,属于特殊符号,不能直接使用,我们可以在w3cschool里查HTML ISO-8859-1 参考手册,比如:双引号(")

2.where标签的用法举例

我们还来实现模糊查询,不过这次是两个模糊查询的条件,username和password:

 上面的做法是我平时最爱干的一种解决办法,但是呢,Mybatis也想到这点,给我们提供了一种解决办法就是where标签,它的特殊作用就是能够去掉执行的sql的第一个条件前的多余的“and”或者“or”这种字符串:

 

注意点:where标签只能去掉第一个条件的前面多余出来的and 或 or ,并不能去掉后面的哈,这一点切记!那么如果我们非要写在后面,这时就只用能trim标签! 

3.trim标签的用法举例

如上所说,trim可以解决and在后面的情况:

这个标签,有四个属性:

prefix:加前缀

prefixOverrides:如果发现字符串前有某个前缀,把它干掉

suffix:加后缀

suffixOverrides:发现某个后缀干掉

 

MyBatis详解-----动态SQL的介绍及使用详解 MyBatis的强大特性之一就是动态sql,使用JDBC的时候或者时在用其他类似的框架的时候,我们根据不同的需求进行拼接SQL的时候都是非常严格的,不仅要注意一些必要的空格,还有注意在sql中的一些逗号的使用。而MyBatis的动态SQL就帮我们解决了这些麻烦。 动态SQL__if的用法 <if> 标签内的Sql片段在满足条件后才会添加,用法为: <if test="条件"> 。 作用:当满足test属性中的条件的时候if中的sql语句会追加在原有的sql语句后面,如果条件.. 阅读详情

相关推荐

MyBatis 接口与 SQL 语句绑定的 4 种方式,你会几种?

通过以上四种方式,你可以轻松地将 MyBatis 接口与 SQL 语句绑定。XML 映射文件配置:适合复杂的 SQL 语句,配置灵活,但维护成本较高。注解绑定:代码简洁,适合简单的 SQL 语句,但不适合复杂的动态 SQL。Provider 类方式:支持动态生成 SQL 语句,灵活性高,但增加了代码复杂度。自动扫描包下所有映射器:简化配置,适合项目中 Mapper 接口较多的情况。

java专栏 1166

OGNL mybatis

http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱...

weixin_30387799的博客 400

Springboot 自定义 Mybatis拦截器,实现 动态查询条件SQL自动组装拼接(玩具)

Springboot 封装整活 Mybatis 动态查询条件SQL自动组装拼接

默默不代表沉默 6977

MyBatis动态拼接SQL

MyBatis动态拼接SQL

magic_818的博客 4783

【树莓派4B】八、树莓派软路由,Ubuntu18.04配置路由转发

我的目的是通过把树莓派做成一个软路由,相当于一个智能路由器。 材料 树莓派4B,操作系统其实可以是其他的Linux版本。以为4B自带无线网卡,就用自带无线网卡作为路由出口。 大概思路 具体步骤 配置两个网卡的IP sudo vim /etc/network/interface 这里设置静态IP,也可以动态获取。 #Local loopback auto lo iface lo inet loopback #Ethernet0 auto eth0 iface eth0 inet static addr

林愿留的博客 10万+

2024年物联网嵌入式最新嵌入式期末大作业——家用智能晾衣杆,初面蚂蚁金服

在家用智能晾衣杆中,用户可以根据自身的需要,切换手动和自动两个模式。天气对应的接口对应心知天气的天气图,可以下载后:调整尺寸->调整透明度->用画图工具保存为单色位图->提取出点阵信息(如我用的zimoV2.2软件),将点阵信息,存到数组里,根据weather的信息,调用display.drawBitmap()方法就能打印出对应的天气了。该库依赖于,将他们导入后,设置屏幕的主从关系,片选信号和数据,时钟信号等引脚后,就设置好屏幕的驱动。

2401_85013604的博客 1248

MyBatis动态SQL标签1

如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。②if标签里的test属性里是用的OGNL表达式,这是apache下的一个标签,用法类似jstl,但有些小差别,具体的内容可以在ognl官网上查询,这里强调一点,有些符号在xml文件里写的时候,属于特殊符号,不能直接使用,我们可以在w3cschool里查。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。

CodeRunning的博客 735

LLC同步整流实战:从驱动时序到调试仿真,效率提升与避坑指南

同步整流技术是提升开关电源效率的关键手段,尤其在LLC谐振变换器中,通过低导通电阻MOSFET替代二极管可显著降低副边整流损耗。然而,驱动时序、电流过零检测及轻载模式切换是工程实践中的核心难点。从Vds检测原理到死区调节,再到仿真与实测验证,工程师需掌握完整的调试方法论。该技术广泛应用于通信电源、服务器电源及车载DC/DC,合理设计LLC同步整流方案能实现满载效率提升约1.8个百分点,同时优化热分布。本文以600W半桥LLC样机为线索,深入分析工作模态、驱动芯片选型、波形判断与仿真模型搭建,为电源设计提供可

weixin_29165465的博客 300

看程序学mybatis 动态SQL1-动态SQL - MYBATIS IF 标签例子

步骤 1 : 基于前面的教程上进行 这个知识点要对Product做不少的查询操作,所以基于 多对一 的基础上进行,因为在这个系列教程中,到那一步,才用到了Product这个类。 步骤 2 : 执行不同的条件限定,需要准备两条sql语句 假设需要对Product执行两条sql语句,一个是查询所有,一个是根据名称模糊查询。 那么按照现在的方式,必须提供两条sql语句:listProduct和listP...

tujiahao1的博客 191

YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

如今各种网络模型更新迭代越来越快,计算机视觉相关的文章也越来越多,多到一些普通,通用的改进点无法达到发表的要求。本专栏正是解决这个问题!如何寻找创新点?为什么要使用这个模块?如何才能提升模型的精度?这是贯穿我们研究始终的问题。创新点在这个专栏中我已经整理好了,这已经省去了大部分时间,但是当我们使用这些新的模块去优化已有的模型,如何才能提升模型的精度,才是我们要达到的最终目标。当然我们可以使用传统的A+B+C的方法去堆积模块,然后是进行大量的实验去排列组合以实现最终的精度提升,这无可厚非。

Limiiiing的博客 6万+

4、机器人建模、规划与控制及运动学知识解析

本博客深入解析了机器人建模、规划与控制的核心内容,涵盖运动学与动力学的基本原理,并结合典型应用场景探讨了移动机器人与操作器的控制策略。同时,博客还介绍了机器人技术的发展趋势及其在工业和服务领域的广泛应用。

desk3的博客 125

【MyBatis】深入解析 MyBatis:使用 if 标签动态拼接 SQL 语句中多个 where 条件的方法(添加条件 “1=1“、使用 where 标签)和 where 标签的作用及使用方法

【MyBatis】深入解析 MyBatis:使用 <if> 动态拼接 SQL 语句中多个 where 条件的方法(添加条件 "1=1"、使用<where>标签)个 <where> 标签的作用及使用方法

OuO-1 的博客 1147

vue2/3 - element表格组件el-table实现懒加载树型(上下级)数据、默认展开和隐藏层级,支持对表格进行修改|新增|删除,解决完成操作后树节点不刷新问题(提供示例代码,一键复制开箱即用

vue2,vue3,elementui,elementPlus,el-table,Table表格组件,表格懒加载数据,element table表格数中的树形结构懒加载,增加后数据不同步更新问题,el-table树形与el-tree树形结构的一键折叠与展开,elementui中el-tree懒加载数据 默认展开最外层节点,Element-plus Table组件树表结构默认展开一级目录,vue实现element table表格树形结构-使用懒加载时-解决子节点增删改后,不刷新子节点数据问题,解决el-tre

✅ 精选推荐文章 1万+

mybatis动态SQL多条件查询1 - if 标签

Mybatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的过程。它的存在是为了解决拼接SQL语句字符串的痛点问题。创建新的Mapper接口和新的mapper映射文件。 目录 1.创建DynamicSqlMapper接口 2.创建DynamicSqlMapper映射文件 3.测试类 4.测试结果 5. 引伸 : 其中一样传入信息不符合 5.1 and后的参数不提供 5.1.1运行效果 5.2 where后的参数不提供 5.2.1 运行效果 5.2.2 解决方法 6. 总.

m0_53753920的博客 1731

[AHK]获取通达信软件上的股票代码

PC上的股票交易软件的自动止损、自动下单等功能比较弱,不如期货交易软件。 自力更生,程序员都是自己打造工具。 根据IPO模型(Input 输入,Process处理,Output输出),为了方便自动化首先要获取当前交易软件上浏览的股票代码。 截图再OCR显然太麻烦,通过Winspy工具查看下交易软件自带功能的消息号(33780),大家记住这个号码! 下面在用AutoHotkey作为变成语...

liuyukuan的专栏 1万+

SPMI总线协议(一)

系统电源管理接口( System Power Management Interface简称SPMI)是一种双线串行接口,用于连接片上系统(SoC)处理器系统的集成电源控制器(PC)与一个或多个电源管理集成电路(PMIC)电压调节系统。SPMI 使系统能够使用单个 SPMI 总线动态调整 SoC 内部电压域的电源和衬底偏置电压。移动设备和其他便携式设计正日益采用系SPMI)协议,实现多主多从系统,根据实时系统需求监测和动态控制供电电压。设计人员可以在系统级实现更低的功率。

qflook的博客 888

mybatis解决动态拼接的where 1=1问题

当遇到多个查询条件,使用where 1=1 可以很方便的解决我们的问题,但是这样很可能会造成非常大的性能损失,因为添加了 “where 1=1 ”的过滤条件之后,数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫对每行数据进行扫描(即全表扫描) 来比较此行是否满足过滤条件,当表中的数据量较大时查询速度会非常慢;此外,还会存在SQL 注入的风险。 select <includ...

由入门到精通 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

mybatis 入门(四):动态SQL

mybatis 不仅支持传入参数到SQL语句标签,还支持通过字符串拼接的方式实现动态传入SQL标签。处于灵活性的考虑,对应 where 后的语句如果想实现动态SQL,要么在where后添加 1=1 实现,要么就引入标签,至于where后面的SQL拼接,需要再引入 if 标签形如= null">,其中state 就是传入SQL的Java字段,用以判断该if语句中的SQL是否可以进行拼接。另:where标签中 的第一个if标签会被自动处理,但是之后的标签不会校验生成的SQL是否正确。......

备忘录的博客 240

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MyBatis拒绝where 1=1

为什么使用 where 1=1? 在MyBatis框架中,动态SQL是很棒的一点,为了解决拼接SQL字符串带来的问题,MyBatis存在动态SQL技术,按照特定的条件对满足条件的SQL语句进行拼接。 举例: <select id="getEmpByIf" resultType="Emp"> select * from t_emp where 1=1 <if test="empName !=null and empName!=''">

hd_cash的博客 1249

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2025/2/23 1-DAY《尚硅谷》—— MyBatis 动态SQL(涵盖各种标签以及使用实例演示和解析)——if标签、where标签、trim标签、choose、when......

2025/2/23 1-DAY《尚硅谷》—— MyBatis 动态SQL(涵盖各种标签以及使用实例演示和解析)——if标签、where标签、trim标签、choose、when、otherwise标签、foreach标签、sql标签。

YZH&HQQ 765

mybatis中 where 1 = 1和动态标签<where></where>

mybatis中 where 1 = 1和动态标签where 比如下面这段代码: <select id="getTotal" parameterType="Map" resultType="Integer"> select count(*) from menu where 1 = 1 <if test="parentId != null"> and pa...

RussellChampagne的博客 1074

Mybatis的动态sql、懒加载

一、 动态sql if标签:满足某某条件 <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{title} </if> ...

醒不来的梦的博客 864

MyBatis 动态 SQL:让 SQL 语句随条件灵活变化

本文详细介绍了MyBatis动态SQL的多种标签用法。主要讲解了if标签实现条件查询;where标签替代where 1=1;set标签用于更新操作;choose/when/otherwise实现多条件分支;foreach标签遍历数组、集合和Map进行批量操作。每种标签都提供了具体的使用示例,包括持久层接口定义、映射文件配置和测试方法。动态SQL可以根据不同条件灵活构建SQL语句,使数据库操作更高效便捷。掌握这些标签能显著提升MyBatis开发效率。

艺杯羹的博客 1988

Mybatis where 1=1 和 <where>标签

&lt;select id="selSampleListByIDX4" resultMap="BaseResultMap" parameterType="cn.com.git.cbs.datamodel.TBL_Sample"&gt; select &lt;include refid="Base_Column_List" /&gt; from SAMPLE where

weixin_34356138的博客 409

Mybatis动态sql中的where标签的使用

在MyBatis中,建议尽量避免使用无意义的SQL拼接where 1=1,我们可以使用where标签来替代

北辰 3918

MyBatis的SQL

MyBatis的SQL1.CRUD1)select标签2)insert标签3)update标签4)delete标签2.动态sqlif标签where标签补充 1.CRUD 1)select标签 第一个查询语句: <!-- 查询所有用户信息 --> <select id="findAllUser" resultType="com.gxy.entity.User"> select * from user </select> 这是一个id为findAllUser的映射语

weixin_52033343的博客 973
上一篇: 2025最新AI软件系统,AI绘画网站系统源码(多模态大模型+AI智能体+4o编辑AI绘画+文档分析支持)
下一篇: 【Mybatis】动态SQL标签2
synchronizeOn
博客等级 码龄3年 1193粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值