使用中踩到的坑记录一下(大神请略过,我只是个菜菜,忽喷!!!万分感谢!!!)

<mapper namespace="dynamic"><resultMap id="userMap" type="com.soft.test.model.User"><id column="id" property="id"/><result column="username" property="username"/><result column="password" property="password"/><result column="create_date" property="createDate"/></resultMap><!--***if 标签使用类似html的C标签的if 在此处应该是and 或者使用or来代替&&和||*** --><select id="selectUseIf" parameterType="com.soft.test.model.User" resultMap="userMap">select * from t_user where<if test="id != null and id != ''">id=#{id}</if><if test="username != null and username != ''">and username like concat('%',#{username},'%')</if><if test="password != null and password != ''">and password=#{password}</if></select></mapper>

在上方代码中可以看到要注意的点在于要使用and来代替" && "和用or来代替 " || "

mybatis的if判断语句其实跟el表达式的if条件判断有些类似。

例如:

1 如果参数为数字类型的时候没有特俗需求的情况只需要判断是否为null即可。

例如:

如果有特俗需求,例如判断是否大于某个数的时候才行。只需要加上对应的条件判断即可

例如:

mybatis对于这种大于小于等等还有另一种形式。

例如:

对应关系:


gt            对应             >gte         对应              >=lt             对应              <(会报错  相关联的 "test" 属性值不能包含 '<' 字符)lte          对应               <=(会报错  相关联的 "test" 属性值不能包含 '<' 字符)

2 如果为字符串类型

2.1 如果不需要过滤空串的情况 仅仅判断null即可

例如:

2.2 如果需要过滤空串,添加空串判断即可 不支持 && 所以这里用 and or || 来做逻辑与或的判断

例如: 或者

2.3 如果判断字符串是否已某个特俗字符开头,结尾等。直接调用String的对应方法即可

例如:

2.4 是否是某个特定字符串,某些业务有此需要。

例如: 或者

注意:

这种形式的写法在参数类型是字符串的时候是没有问题的,

但是参数类型为非字符串类型的时候就需要写成

仅仅写成也会有很大可能会挂。

也许你会说非字符串的为什么要写成这样。这就要看特俗需要了。

例如:某一个sql片段是公用的,

该片段更新条件也用,但是当你需要将某一个字段更新成null的时候怎么办。

这个时候就可以通过传入一个特定的字符串来弄。当传入的字符串为特定字符串的时候就更新该字符串为null。

xxx=null

当然这样子貌似date型会挂。

通过 2.2 也可以看出mybatis对于字符串的相等不相等的判断也是有对应的特俗操作符的。


eq 对应 ==

neq 对应 !=


当然还可以看出来if的条件判断test是支持对象自身方法调用的,即使是自己写的方法,可以自己尝试。当然下面会有例子。

例如:里面可以用‘xxxx’.equals(xxxx) 字符串的比较两个字符串方法

xxxx.indexOf('ss') 判断字符串里面是否包含某个字符等等

3 判断list是否为空

上面说过,if条件判断可以直接调用对象自身的方法进行逻辑判断,所以list判空。可以调用.size()>0或者.isEmpty()

例如: ,

4 map参数同同理 取值的话 map.key(map中的key名字)即可

此文摘要:特别鸣谢sumlen

使用动态SQL中的if标签做条件判断的几种用法和注意点相关推荐

  1. mybatis动态sql中的where标签的使用

    From: https://blog.csdn.net/wobuaizhi/article/details/81874664 在使用mybatis的动态sql时,有时候遇到根据条件判断添加where后 ...

  2. mybatis动态sql中的trim标签的使用

    trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...

  3. Mybatis动态sql中的foreach标签的使用

    foreach 标签一般用于遍历集合,构建in条件语句或者批量操作语句 <insert id="batchSave" parameterType="java.uti ...

  4. 判断参数大于0_能做条件判断的文本函数

    我们知道文本函数的一般作用就是查找.替换.提取文本等等,可是能做条件判断的文本函数你见过吗?不仅如此,它还可以让日期变数字.数字变大写.金额变万元等等.说到这里,屏幕前的小伙伴有猜到它是谁吗? 在Ex ...

  5. mybatis动态sql中where标签的使用

    where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示: <select id="selectByParams&qu ...

  6. ORACLE 动态SQL中的多个单引号

    今天在项目中遇到动态拼sql的语句, 语句如下: v_sql := 'update Table_Test t ' ||' set t.field1 = ''' || 变量1 || ''','  -- ...

  7. oracle 更新sysdate,如何使用sysdate更新日期列,包括动态sql中的时间戳

    Lalit Kumar .. 9 我已经尝试使用to_date(to_char(sysate)),但缺少时间戳 这样做是没有意义的. 为什么PL/SQL执行这么简单的任务.在纯SQL中执行此操作.UP ...

  8. [网摘]动态SQL中set与select对变量赋值的影响

    在动态SQL中,存在着多种对字符变量赋值的方法.其中set和select使用的朋友最多.对于像我一样的小鸟来说,可能只是会用这两个方法而已,并没有真正理解这两个方法的真正内涵.我个人的理解是这样的:s ...

  9. sql动态sql给变量复值_在动态SQL中使用变量

    sql动态sql给变量复值 Before we delve into these SQL concepts, note that I like to do all my development in ...

最新文章

  1. 刘夏真的简历中国科学院计算机所,专家人才库数据----中国科学院计算技术研究所...
  2. bootstrap-nav属性详解
  3. 【转】使用Apache Kylin搭建企业级开源大数据分析平台
  4. 修改jwt过期时间_PostgreSQL如何修改用户过期时间
  5. ionic cordova 引用百度地图以及利用手机GPS定位
  6. 【PostgreSQL-9.6.3】表空间
  7. 7c盘满了怎么扩容_C盘爆满怎么办?扩容!
  8. c语言五子棋双链表,五子棋的悔棋函数怎么写啊。。。双击鼠标左键悔棋(菠萝镇楼)...
  9. IEC 60335-2-21:2022 安全-第2-21部分:储水式热水器的特殊要求
  10. [经验] 我想加入阿里,我该怎么做
  11. vscode试图写入的管道不存在
  12. 人工智能和5G在无人机技术中的作用
  13. 通过身份证号码得出性别和年龄
  14. centos7配置(nvidia+cuda+cudnn+anaconda+tensorflow)gpu开发环境
  15. VMD/NAMD命令/规则
  16. 【我的渲染技术进阶之旅】如何编译Filament的windows版本程序?
  17. Javaweb学习笔记——Javaweb概述
  18. Elixir - case, cond, and if
  19. Til the Cows Come Home
  20. 【车牌识别和动态称重系统】(二)基于树莓派+HyperLPR的中文车牌识别

热门文章

  1. python爬取链家网的房屋数据
  2. 为什么互联网人不说“人话”?
  3. 软件工程导论概念集合
  4. [附源码]计算机毕业设计Python+uniapp基于android手机设计并实现在线点单系统APPo682z(程序+源码+LW+远程部署)
  5. 计算机windows7连接打印机
  6. 电梯默纳克系统服务器,电梯人必看:默纳克系统运行中报E51原因分析和处理方法...
  7. 计算机教师面试题模板,【小学信息技术教师资格证面试】_小学信息技术教师资格证面试试讲逐字稿万能模板...
  8. 《被讨厌的勇气》-读后感思维导图
  9. 什么是工程师文化?-陈皓
  10. 最小生成树--牛客练习赛43-C