`

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

分享到:
评论

相关推荐

    JSTL标准标签库 <C:out>、<c:set>、<c:remove>和<c:catch>标记 <c:if>、<c:choose>、<c:when>和<c:otherwise>标记 <c:forEach>和<c:forTokens>标记

    ◎ JSTL的基本概念、安装与配置 ◎ JSTL的通用标记:、、和标记 ◎ 条件处理标记:、&lt;c:choose&gt;、&lt;c:when&gt;和&lt;c:otherwise&gt;标记 ◎ 循环标记:和标记

    mybatis 动态sql及参数传递

    choose、when、otherwise 标签 set标签 trim标签 forEach标签 参数传递 单个参数传递 多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,...

    ssm分页查询

    &lt;c:choose&gt; &lt;c:when test="${page.pageNow - 1 &gt; 0}"&gt; ${page.pageNow - 1}"&gt;上一页&lt;/a&gt; &lt;/c:when&gt; &lt;c:when test="${page.pageNow - 1 &lt;= 0}"&gt; 上一页&lt;/a&gt; &lt;/c:when&gt; &lt;/c:choose&gt; &lt;c:choose&gt; &lt;c:...

    基于框架的Web开发-动态SQL.doc

    7.3 动态SQL 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本...2 choose、when、otherwise元素 相当于结构:if -- else if -- else if -- else &lt;choose&gt; &lt;when test = "条件1"&gt; 语句1 &lt;/when&gt; &lt;when test = "条

    Mybatis由浅入深 - 03动态SQL 源码

    这是Mybatis由浅入深的第3节源码。 动态SQL是Mybatis的亮点功能之一,解决了根据不同条件拼接SQL的繁琐痛苦问题,避免了java代码和sql混在一起,是非常...2. choose (when, otherwise) 3. trim(where, set) 4. foreach

    JSTL 以及自定义标签开发相关

    JSTL 以及自定义标签开发相关 JSTL 核心...2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL操作标签:import、url、redirect 使用标签时,一定要在jsp文件头加入以下代码: ...

    关于mybatis的一些相关资源

    MyBatis的动态SQL主要通过XML标签来实现,这些标签包括、&lt;choose&gt;、&lt;when&gt;、&lt;otherwise&gt;、、、等。这些标签可以单独使用,也可以组合使用,以构建复杂的动态SQL逻辑。例如,使用标签可以根据某个条件的真假来决定...

    MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据

    MyBatis提供了多种元素来实现动态SQL,如、&lt;choose&gt;、&lt;when&gt;、&lt;otherwise&gt;、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否成立,从而决定是否...

    MyBatis动态SQL是一种强大的特性.docx

    MyBatis提供了多种元素来实现动态SQL,如、&lt;choose&gt;、&lt;when&gt;、&lt;otherwise&gt;、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否成立,从而决定是否...

Global site tag (gtag.js) - Google Analytics