JavaEE-Mybatis进阶
动态SQL
<if>标签
<trim>标签
之前的插⼊⽤户功能,只是有⼀个 gender 字段可能是选填项,如果有多个字段,⼀般考虑使⽤标签结合标签,对多个字段都采取动态⽣成的⽅式。
标签中有如下属性:
prefix:表⽰整个语句块,以prefix的值作为前缀
suffix:表⽰整个语句块,以suffix的值作为后缀
prefixOverrides:表⽰整个语句块要去除掉的前缀
suffixOverrides:表⽰整个语句块要去除掉的后缀
以上 sql 动态解析时,会将第⼀个 部分做如下处理:
基于 prefix 配置,开始部分加上 (
基于 suffix 配置,结束部分加上 )
多个 组织的语句都以 , 结尾,在最后拼接好的字符串还会以 , 结尾,会基于
suffixOverrides 配置去掉最后⼀个 ,
注意 <if test="username !=null"> 中的 username 是传⼊对象的属性
<where>标签




但如果只有id作为条件来作为查询或者删除的条件时,最好不要用这个标签,因为当id没有传时,where标签也不会有,也就是说会查询或删除所有的数据,会导致很大的影响。而不用这个标签,没有传递参数,这个参数也只是变成null而已,查询或者删除不了任何数据,影响没有那么大。
当有多个条件用and链接起来,只要有其中一个条件为null,总体都为null。

<set>标签
<foreach>标签
当传递的参数是一个集合,需对集合进⾏遍历时可以使⽤该标签。标签有如下属性:
collection:绑定⽅法参数中的集合,如 List,Set,Map或数组对象
item:遍历时的每⼀个对象
open:语句块开头的字符串
close:语句块结束的字符串
separator:每次遍历之间间隔的字符串
需求: 根据多个userid, 删除⽤⼾数据
接⼝⽅法:


<include>标签
在xml映射⽂件中配置的SQL,有时可能会存在很多重复的⽚段,此时就会存在很多冗余的代码
那么就可以将这些冗余的代码打包起来,需要用的的时候再想函数一样调用。