博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis学习之 trim和choose
阅读量:4030 次
发布时间:2019-05-24

本文共 2614 字,大约阅读时间需要 8 分钟。

一、trim标签

mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。

以下是trim标签中涉及到的属性:

属性 描述
prefix 给sql语句拼接的前缀
suffix 给sql语句拼接的后缀
prefixOverrides 去除sql语句前面的关键字或者字符,该关键字或者字符由prefixOverrides属性指定,假设该属性指定为"AND",当sql语句的开头为"AND",trim标签将会去除该"AND"
suffixOverrides 去除sql语句后面的关键字或者字符,该关键字或者字符由suffixOverrides属性指定

1、trim标签使用

  • trim 有四个属性
  • prefix,suffix 表示在trim标签包裹的部分的前面或者后面 添加内容( 注意:是没有prefixOverrides,suffixOverrides的情况下)
  • 如果有prefixOverrides,suffixOverrides 表示覆盖Overrides中的内容。
  • 如果只有prefixOverrides,suffixOverrides 表示删除。

例如:

update user
cash= #{cash},
address= #{address},
id = #{id}

只有prefix=“set”,表示在trim包裹的部分的前面添加 set。

只有suffixOverrides=“,”,表示删除最后一个逗号。

上例也可以写成

update user set
cash= #{cash},
address= #{address},

由于set写在了外面,trim中就不再需要prefix属性了,所以删除。

where标签从外面拿进trim里面,这样其实可以认为是将最后一个逗号”,”替换成了where id = #{id}。所以suffix和suffixOverrides一起使用。

2、使用trim标签去除多余的and关键字

有这样的一个例子:

如果这些条件没有一个能匹配上会发生什么?最终这条 SQL 会变成这样:

SELECT * FROM BLOGWHERE

这会导致查询失败。如果仅仅第二个条件匹配又会怎样?这条 SQL 最终会是这样:

SELECT * FROM BLOGWHERE AND title like ‘someTitle’

你可以使用where标签来解决这个问题,where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。

trim标签也可以完成相同的功能,写法如下:

state = #{state}
AND title like #{title}
AND author_name like #{author.name}

3、使用trim标签去除多余的逗号

最重要的属性是

suffixOverrides=","

二、choose (when, otherwise)标签

有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个,choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。

这里的用来封装SQL语句,如普通 <sql id=“base" id ,name,age>, 来调用该字段,test用来判断

转载地址:http://uelbi.baihongyu.com/

你可能感兴趣的文章
Java8 HashMap集合解析
查看>>
ArrayList集合解析
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
Android计算器实现源码分析
查看>>
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>
自定义 select 下拉框 多选插件
查看>>
js判断数组内是否有重复值
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
jtag dump内存数据
查看>>
linux和windows内存布局验证
查看>>
linux config
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>