`

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

分享到:
评论

相关推荐

    Mybatis choose when用法实例代码

    Mybatis choose when语句的基本语法结构为:&lt;choose&gt;标签中包含一个或多个&lt;when&gt;标签和一个&lt;otherwise&gt;标签,用于指定不同的条件和对应的SQL语句。例如: ```xml &lt;choose&gt; &lt;when test="cityId == '00' "&gt; &lt;!-- ...

    Mybatis_day2.pdf

    7.4. choose when otherwise标签:类似于Java的switch语句,根据条件执行相应的SQL语句。当没有满足的条件时,执行`otherwise`标签内的内容。 7.5. set标签:在更新语句中,`set`标签用于动态添加`SET`子句的字段,...

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

    2. `&lt;c:choose&gt;`, `&lt;c:when&gt;`, `&lt;c:otherwise&gt;`:类似于Java的switch语句,可以进行多条件分支判断。 **循环标记**: 1. `&lt;c:forEach&gt;`:用于遍历集合、数组或迭代对象,实现循环操作。 2. `&lt;c:forTokens&gt;`:对字符...

    Mybatis动态sql

    when 元素表示当 when 中的条件满足的时候就输出其中的内容,跟 JAVA 中的 switch 效果差不多的是按照条件的顺序,当 when 中有条件满足的时候,就会跳出 choose,即所有的 when 和 otherwise 条件中,只有一个会...

    条件标签用法与事例

    示例中的`c_choose.jsp`页面展示了如何使用`&lt;c:choose&gt;`、`&lt;c:when&gt;`和`&lt;c:otherwise&gt;`来根据变量`count`的值设置字体颜色: ```jsp ; charset=UTF-8" language="java" %&gt; &lt;c:choose&gt; &lt;c:when test="$...

    MyBatis从入门到入土——动态SQL(csdn)————程序.pdf

    在本篇中,我们将深入探讨MyBatis的动态SQL功能,包括`if`元素、`choose`、`when`和`otherwise`元素的使用。 首先,`if`元素是动态SQL中最基础的部分,它的作用类似于Java中的`if`语句。在MyBatis中,`if`元素通过`...

    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:...

    mybatis动态sql

    when 元素表示当 when 中的条件满足的时候就输出其中的内容,跟 JAVA 中的 switch 效果差不多的是按照条件的顺序,当 when 中有条件满足的时候,就会跳出 choose,即所有的 when 和 otherwise 条件中,只有一个会...

    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 动态SQL.pdf

    - **`choose (when, otherwise)`**:类似于 Java 中的 `switch` 语句,可以根据不同的条件选择执行不同的 SQL 片段。 - **`trim (where, set)`**:用于处理 SQL 语句中的前缀或后缀,例如自动添加 `WHERE` 关键词或...

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

    而MyBatis提供的动态SQL功能,则通过一系列内置的标签(如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;trim&gt;`、`&lt;where&gt;`、`&lt;set&gt;`等)实现了对SQL语句的灵活控制,并将这些标签置于XML映射文件中进行定义,...

    动态ibatis查询语句配置

    这些标签包括`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等。它们允许我们在不编写大量重复代码的情况下,根据变量的值来决定SQL语句的组成部分。 1. `&lt;if&gt;`标签:用于判断条件...

    XML应用开发(软件品牌)-1期 5.4案例分析-使用XSL流程控制语言.doc

    当需要处理多个条件时,我们可以使用`&lt;xsl:choose&gt;`, `&lt;xsl:when&gt;`和`&lt;xsl:otherwise&gt;`元素。`&lt;xsl:choose&gt;`是容器元素,`&lt;xsl:when&gt;`表示一个条件分支,`&lt;xsl:otherwise&gt;`用于捕获所有未匹配的条件。例如,在案例2...

    jstl标签库2

    本文将详细介绍JSTL中的条件标签,包括`&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:when&gt;`和`&lt;c:otherwise&gt;`。 #### 二、`&lt;c:if&gt;`标签 ##### 1. 作用 `&lt;c:if&gt;`标签用于执行简单的条件判断。当`test`属性指定的表达式结果为`true`...

    JSTL In Action部分笔记

    - `&lt;c:choose&gt;`中只能包含`&lt;c:when&gt;`和`&lt;c:otherwise&gt;`标签。 - 每个`&lt;c:choose&gt;`中至少应有一个`&lt;c:when&gt;`,但`&lt;c:otherwise&gt;`是可选的。 - 所有`&lt;c:when&gt;`标签的条件是互斥的,只有一个会被执行。 - 如果所有`&lt;c:...

    JS简单标签及相关的应用

    **choose/when/otherwise标签**用于实现多分支条件判断。 - **基本用法**: ```javascript &lt;c:choose&gt; &lt;c:when test="${condition1}"&gt; 条件1为真时执行的代码 &lt;/c:when&gt; &lt;c:when test="${condition2}"&gt; 条件...

    MyBatis动态拼接SQL

    MyBatis通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等标签来实现动态SQL的构建。 1. `&lt;if&gt;`标签:用于判断某个条件是否成立,如果成立则插入相应的SQL片段。例如,当查询...

Global site tag (gtag.js) - Google Analytics