mybatis里choose里可以写多个when吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis里choose里可以写多个when吗?相关的知识,希望对你有一定的参考价值。
比如
<choose>
<when>
</when>
<when>
</when>
<when>
</when>
<otherwise>
</otherwise>
</choose>
choose, when, otherwise
有些时候,我们不想用到所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。
还是上面的例子,但是这次变为提供了“title”就按“title”查找,提供了“author”就按“author”查找,若两者都没有提供,就返回所有符合条件的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>本回答被提问者采纳 参考技术B 可以 相当 switch 多个 case 然后 default
MyBatis中choose when正确写法
<choose>
<when test="scoreRange!=null and scoreRange eq 1">
AND sc.score <![CDATA[ < ]]> 60
</when>
<when test="scoreRange!=null and scoreRange eq 2">
AND (sc.score <![CDATA[ >= ]]> 60 AND sc.score <![CDATA[ <= ]]> 70 )
</when>
<when test="scoreRange!=null and scoreRange eq 3">
AND (sc.score <![CDATA[ >= ]]> 70 AND sc.score <![CDATA[ <= ]]> 80 )
</when>
<when test="scoreRange!=null and scoreRange eq 4">
AND (sc.score <![CDATA[ >= ]]> 80 AND sc.score <![CDATA[ <= ]]> 90 )
</when>
<when test="scoreRange!=null and scoreRange eq 5">
AND sc.score <![CDATA[ > ]]> 90
</when>
<otherwise>
</otherwise>
</choose>
以上是关于mybatis里choose里可以写多个when吗?的主要内容,如果未能解决你的问题,请参考以下文章
mybatis框架-choose when otherwise 的使用
求解mybatis choose 标签使用为啥只能执行第一个<when>语句
drools when写条件判断时能加循环吗?我有多个条件要进行判断,而且条件的数量未知。