when 元素表⽰当 when 中的条件满⾜的时候就输出其中的内容,跟 JAVA 中的 switch 效果差不多的是按照条件的顺序,当 when 中有条件满⾜的时 候,就会跳出 choose ,即所有的 when 和 otherwise 条件中,只有⼀个会输出,当所有的我很条件都不满⾜的时候就输出otherwise 中的 内容。
where
where 语句的作⽤主要是简化 SQL 语句中 where 中的条件判断的,先看⼀个例⼦
and title = #{title}
and content = #{content}
and owner = #{owner}
where 元素的作⽤是会在写⼊ where 元素的地⽅输出⼀个 where ,另外⼀个好处是你不需要考虑 where 元素⾥⾯的条件输出是什么样⼦的, MyBatis 会智能的帮你处理,如果所有的条件都不满⾜那么 MyBatis 就会查出所有的记录,如果输出后是 and 开头的, MyBatis 会把第⼀个 and 忽略,当然如果是 or 开头的, MyBatis 也会把它忽略;此外,在 where 元素中你不需要考虑空格的问 题, MyBatis 会智能的帮你加上。
注意,当 Where 元素后⾯跟着 ,并不能去除 foreach 元素中的 AND ,这时可以⽤trim来去除。
trim
trim 元素的主要功能是可以在⾃⼰包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是 prefix 和 suffix ;可以把包含内容的⾸部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是 prefixOverrides 和 suffixOverrides ;正因为 trim 有这样的功能,所以我们也可以⾮常简单的利⽤ trim 来代替 where 元素的功能
......
trim元素后⾯跟着 ,可以去除 foreach 元素中的 AND 。
update t_blog
title = #{title},
content = #{content},
where id = #{id}
set
set 元素主要是⽤在更新操作的时候,它的主要功能和 where 元素其实是差不多的,主要是在包含的语句前输出⼀个 set ,然后如果包含的语句是以逗号结束的话将会把该逗号忽略,如果 set 包含的内容为空的话则会出错。有了 set 元素我们就可以动态的更新那些修改了的 字段。下⾯是⼀段⽰例代码: