`

choose (when, otherwise)

 
阅读更多

choose (when, otherwise)

 

    有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为true,就会执行if标签中的条件。MyBatis提供了choose 元素。if标签是与(and)的关系,而choose比傲天是或(or)的关系。

    choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行otherwise中的sql。类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。

    例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字多于错误。

        <choose>
            <when test="param.agentId">
                AND o.agentId = #{param.agentId}
            </when>
            <when test="param.groupId">
                AND o.groupId = #{param.groupId}
            </when>
            <when test="param.mendianId">
                AND o.mendianId = #{param.mendianId}
            </when>
            <when test="param.areaId">
                AND o.areaId = #{param.areaId}
            </when>
            <when test="param.bigAreaId">
                AND o.bigAreaId = #{param.bigAreaId}
            </when>
            <when test="param.cityId">
                AND o.cityId = #{param.cityId}
            </when>
            <otherwise>
            </otherwise>
        </choose>

 只取多个条件中的一个,相当于switch

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics