mybatis里choose里可以写多个when吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis里choose里可以写多个when吗?相关的知识,希望对你有一定的参考价值。

比如
<choose>
<when>
</when>
<when>
</when>
<when>
</when>
<otherwise>
</otherwise>

</choose>

参考技术A 是可以的。给你一段官方翻译文档。
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正确写法

求解mybatis choose 标签使用为啥只能执行第一个<when>语句

drools when写条件判断时能加循环吗?我有多个条件要进行判断,而且条件的数量未知。

java jsp页面用<c:choose><c:when><c:others>写的逻辑没有显示,该怎么找错

MySQL case when 使用