choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字多于错误。
<!-- choose(判断参数) - 按顺序将实体类 User 第一个不为空的属性作为:where条件 --> <select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User"> SELECT * FROM User u <where> <choose> <when test="username !=null "> u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%') </when > <when test="sex != null and sex != '' "> AND u.sex = #{sex, jdbcType=INTEGER} </when > <when test="birthday != null "> AND u.birthday = #{birthday, jdbcType=DATE} </when > <otherwise> </otherwise> </choose> </where> </select> 第二种形式:
- <!-- choose(判断参数) - 按顺序将实体类 User 第一个不为空的属性作为:where条件 -->
- <select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">
- SELECT *
- FROM User u
- <choose>
- <when test="username !=null ">
- where u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')
- </when >
- <when test="sex != null and sex != '' ">
- where AND u.sex = #{sex, jdbcType=INTEGER}
- </when >
- <when test="birthday != null ">
- where AND u.birthday = #{birthday, jdbcType=DATE}
- </when >
- <otherwise>
- where 1=1
- </otherwise>
- </choose>
- </select>
批量 <if test="parentIdMap !=null"> and parentId in <foreach collection="parentIdMap" item="parentIds" index="index" open="(" close=")" separator=","> #{parentIds} </foreach> </if>
相关推荐
choose、when、otherwise 标签 set标签 trim标签 forEach标签 参数传递 单个参数传递 多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,...
这是Mybatis由浅入深的第3节源码。 动态SQL是Mybatis的亮点功能之一,解决了根据不同条件拼接SQL的繁琐痛苦问题,避免了java代码和sql混在一起,是非常...2. choose (when, otherwise) 3. trim(where, set) 4. foreach
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...
MyBatis 动态 SQL 通过使用 、<choose>、<when>、<otherwise>、、<set> 等标签来实现。以下是一些常见的动态 SQL 标签及其用法,通过组合使用这些标签,可以编写出非常灵活和强大的 SQL 语句,以适应不同的查询和...
MyBatis 动态 SQL 通过使用 、<choose>、<when>、<otherwise>、、<set> 等标签来实现。附件是一些常见的动态 SQL 标签及其用法,通过组合使用这些标签,可以编写出非常灵活和强大的 SQL 语句,以适应不同的查询和...
使用、<choose>、<when>、<otherwise>、、等元素构建动态SQL。 动态SQL的应用场景和实例。 6. 注解配置: 使用注解代替XML映射器文件。 常用的注解如@Select、@Insert、@Update、@Delete。 7. 一级缓存与二级缓存:...
MyBatis的动态SQL主要通过XML标签来实现,这些标签包括、<choose>、<when>、<otherwise>、、、等。这些标签可以单独使用,也可以组合使用,以构建复杂的动态SQL逻辑。例如,使用标签可以根据某个条件的真假来决定...
使用 、<choose>、<when>、<otherwise> 构建动态 SQL。 动态 SQL 的应用场景和语法示例。 5. 注解配置 使用注解替代映射器文件。 常用注解:@Select、@Insert、@Update、@Delete。 6. 一级缓存与二级缓存 一级缓存...
choose, when, otherwise \ 40 trim, where, set \ 41 foreach \ 43 Java API \ 44 应用目录结构\ 44 SqlSessions \ 45 SqlSessionFactoryBuilder \ 45 SqlSessionFactory\ 47 SqlSession \ 48 ...
它允许开发者在XML映射文件中定义SQL模板,并通过预定义的标签如、<choose>、<when>和<otherwise>等,根据传入的参数动态地生成SQL语句。这样,同一个SQL映射文件就可以处理多种不同的业务场景,极大地提高了代码的...
MyBatis提供了多种元素来实现动态SQL,如、<choose>、<when>、<otherwise>、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,标签可以根据条件判断是否包含某个SQL片段,<choose>、...
在 MyBatis 中,可以使用 `<if>`、`<choose>`、`<when>`、`<otherwise>` 等标签来实现动态 SQL。以下是一个简单的示例: ```xml SELECT * FROM user != null and username != ''"> AND username = #{username...
什么是MyBatis?............................................................................................................. 5 入门........................................................................
MyBatis提供了多种元素来实现动态SQL,如、<choose>、<when>、<otherwise>、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否成立,从而决定是否...
MyBatis 提供了强大的动态 SQL 功能,它允许你根据参数的值来动态地构建...<choose>, <when>, <otherwise>:类似于 Java 中的 switch-case-default 结构。 xml <select id="findUsersByType" resultType="User"> SEL
MyBatis提供了多种元素来实现动态SQL,如、<choose>、<when>、<otherwise>、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否成立,从而决定是否...
其中,最常用的标签包括、<choose>、<when>、<otherwise>、、、等。这些标签可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否满足,然后决定是否添加某个SQL片段...