SSM-Mybatis-动态SQL-choose,when,otherwise
类似java中的switch…case…default 功能的语句。
假设一个列子:
- 角色编号不为空,则只用角色编号作为查询条件
- 当角色条件为空时,而角色名称不为空,则用角色名称作为条件进行模糊查询
- 当角色编号和名称都为空,则要求角色备注为空
<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>