条件分支 ‹choose› ‹when› ‹otherwise›

Exisi 2021-03-27 07:29:30
Categories: Tags:
  • <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>元素都可以包含任意数量的子元素,用于生成更复杂的条件语句。