返回介绍

5.3 choose、when、otherwise 元素

发布于 2025-04-26 13:08:34 字数 1122 浏览 0 评论 0 收藏

5.2 节的例子相对于 Java 语言中的 if 语句就是一种非此即彼的关系,但是很多时候我们所面对的不是一种非此即彼的选择。在有些时候我们还需要第三种选择甚至更多的选择,也就是说,我们也需要 switch...case...default 语句,而在映射器的动态语句中 choose、when、otherwise 元素承担了这个功能,让我们看看下面的场景。

  • 当角色编号不为空,则只用角色编号作为条件查询。

  • 当角色编号为空,而角色名称不为空,则用色名称作为条件进行模糊查询。

  • 当角色编号和角色名称都为空,则要求角色备注不为空。

让我们看看如何使用 choose、when、otherwise 元素去实现,如代码清单 5-2 所示。

代码清单 5-2:使用 choose、when、otherwise 元素

<select id="findRoles" parameterType="role" resultMap="roleResultMap">
        select role_no, role_name, note from t_role 
        where 1=1
        <choose>
            <when test="roleNo != null and roleNo !=''">
              AND role_no = #{roleNo}
            </when>
            <when test="roleName != null and roleName !=''">
AND role_name like concat('%', #{roleName}, '%')
            </when>
            <otherwise>
              AND note is not null
            </otherwise>
        </choose>
</select>

这样 MyBatis 就会根据参数的设置进行判断来动态组装 SQL,以满足不同业务的要求。远比 Hibernate 和 JDBC 大量判断 Java 代码要清晰和明确得多。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。