概述
choose when otherwise:相当于swich,when是case,otherwise是default
<select id="setSelect" resultType="Blog">
select * from blog
/*where用来去掉可能多出来的and 注释也不能乱写位置,会报错的*/
<where>
<choose>
<when test="author !=null">
/*choose搭配when使用 与swich差不多 只执行其中一个 otherwise是默认执行*/
author=#{author}
</when>
<when test="title !=null">
/*when是顺序执行的,先判断第一个,满足就跳出了,不会判断第二个when的 最后才是默认的other*/
and title=#{title}
</when>
<otherwise>
and views=#{views}
</otherwise>
</choose>
</where>
</select>
官方的解释
有时候,我们不想使用所有的条件,而只是想从多个条件中选择一个使用。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。
还是上面的例子,但是策略变为:传入了 “title” 就按 “title” 查找,传入了 “author” 就按 “author” 查找的情形。若两者都没有传入,就返回标记为 featured 的 BLOG(这可能是管理员认为,与其返回大量的无意义随机 Blog,还不如返回一些由管理员精选的 Blog)。
<select id="findActiveBlogLike"
resultType="Blog">
SELECT * FROM BLOG WHERE state = ‘ACTIVE’
<choose>
<when test="title != null">
AND title like #{title}
</when>
<when test="author != null and author.name != null">
AND author_name like #{author.name}
</when>
<otherwise>
AND featured = 1
</otherwise>
</choose>
</select>
最后
以上就是忧郁手链为你收集整理的Mybatis -> 动态SQL之choose、when、otherwise的全部内容,希望文章能够帮你解决Mybatis -> 动态SQL之choose、when、otherwise所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复