- <choose>它可以根据传入的参数动态判断是否需要添加条件语句。<choose>元素包含多个<when>元素和一个<otherwise>元素。
- 每个<when>元素都有一个test属性,用于指定一个表达式,根据该表达式的结果来判断是否需要添加条件语句。
- 如果所有<when>元素的test表达式的结果都为false,则会添加<otherwise>元素中的语句。
示例
<select id="getStudentList" parameterType="Student" resultMap="studentResultMap">
SELECT * from student
<where>
<choose>
<when test="studentName!=null and studentName!='' ">
studentName LIKE CONCAT(CONCAT('%', #{studentName}),'%')
</when>
<when test="studentSex!= null and studentSex!= '' ">
AND studentSex = #{studentSex}
</when>
<when test="studentBirthday!=null">
AND studentBirthday = #{studentBirthday}
</when>
<otherwise>
studentName LIKE CONCAT(CONCAT('%', #{studentName}),'%')
</otherwise>
</choose>
<where>
</select>
属性 |
描述 |
test |
<when> 标签的表达式,一般用于判断传递的参数是否存在 |
注
- <choose> 元素只有在其中包含至少一个子元素时才会生效。如果所有子元素都没有生效,则<choose>元素会被忽略。同时,在最后生成的SQL语句中,最后一个字段后面不应该有逗号,因此<choose>元素会自动移除最后一个字段后面的逗号。
- 此外,<when>元素和<otherwise>元素都可以包含任意数量的子元素,用于生成更复杂的条件语句。