文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.3 choose、when、otherwise 元素
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 代码要清晰和明确得多。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论