【MyBatis专题】专题四:动态SQL
if
根据test
条件决定是否包含标签内语句
1 |
|
choose、when、otherwise
如果想从多个条件中选择一个使用可以考虑使用 choose
、when
、otherwise
,语法类似于Java
中的switch
。
1 |
|
where
<where>
标签解决的问题是当标签if
所有条件都不满足或者中间部分条件满足时,自动去除子句中的AND
或 OR
或where
,<where>
素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。
例如如下示例,当title
为空,author
不为空时,不使用<where>
标签时,SQL
语句为:select xxx from xxx where and author = ?
,很明显where
子句中多了一个and
语法错误;使用<where>
标签时,MyBatis
会自动移除子句中多余的and
。
1 |
|
trim
如果 where 元素与期望的不太一样时,也可以通过自定义 trim 元素来定制 where 元素的功能。
1 |
|
prefix
语句拼接前缀prefixOverrides
移除指定前缀字符suffix
语句拼接后缀字符suffixOverrides
移除指定后缀字符
set
set
用于动态语句更新,set
元素会动态地在行首插入 SET
关键字,并会删掉额外的逗号
1 |
|
foreach
需要对一个集合进行遍历时可以使用foreach
语法进行循环处理(常见与IN
参数拼接);允许指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量
1 |
|
item
集合中的元素index
元素索引位置list
需要遍历的集合,支持List
、Map
、Set
或数组,为Map
时,index
是键,item
是值open
拼接结果左边开始字符close
拼接结果右边结束字符
【MyBatis专题】专题四:动态SQL
https://probiecoder.cn/mybatis/dynamic.html