• choose, when, otherwise

    choose, when, otherwise

    有时我们不想应用到所有的条件语句,而只想从中择其一项。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。

    还是上面的例子,但是这次变为提供了“title”就按“title”查找,提供了“author”就按“author”查找的情形,若两者都没有提供,就返回所有符合条件的 BLOG(实际情况可能是由管理员按一定策略选出 BLOG 列表,而不是返回大量无意义的随机结果)。

    1. <select id="findActiveBlogLike"
    2. resultType="Blog">
    3. SELECT * FROM BLOG WHERE state = ‘ACTIVE’
    4. <choose>
    5. <when test="title != null">
    6. AND title like #{title}
    7. </when>
    8. <when test="author != null and author.name != null">
    9. AND author_name like #{author.name}
    10. </when>
    11. <otherwise>
    12. AND featured = 1
    13. </otherwise>
    14. </choose>
    15. </select>