在学习了标签中使用时,只要test中的表达式为 true,就会执行 if 标签中的条件,并且会拼接到where语句后。但是,有时候我们并不想使用所有条件,也许只想从多个选项中选择一个而已。这个时候再使用标签已经不够,MyBatis提供了choose 标签。标签之间的关系是与(and)的关系,而标签之间是或(or)的关系。
标签按顺序逐个判断内部标签的test条件出否成立,如果遇到一个条件成立,则结束。当中所有的条件都不成立时,则会执行中的语句。类似于Java的switch 语句,为switch,为case,则为default。
小博老师给大家演示下如何使用标签。先回顾下昨天的Mapper文件内容:
如果用标签表示,内容如下:
两者的区别在于,如果userName与userId同时不为空,只会按照userName的条件查询,忽略userId条件。而会把两个条件拼接起来一起查询。