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包起来,放置关键字多于错误。
via: http://www.yiibai.com/mybatis/mybatis_choose.html
<!-- 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 (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中 的 choose 很类似。
<select id="dynamicChooseTest" parameterType="Blog" resultType="Blog"> select * from t_blog where 1 = 1 <choose> <when test="title != null"> and title = #{title} </when> <when test="content != null"> and content = #{content} </when> <otherwise> and owner = "owner1" </otherwise> </choose> </select>
when元素表示当 when 中的条件满足的时候就输出其中的内容,跟 JAVA 中的 switch 效果差不多的是按照条件的顺序,当 when 中有条件满足的时候,就会跳出 choose,即所有的 when 和 otherwise 条件中,只有一个会输出,当所有的我很条件都不满足的时候就输出 otherwise 中的内容。所以上述语句的意思非常简单, 当 title!=null 的时候就输出 and titlte = #{title},不再往下判断条件,当title为空且 content!=null 的时候就输出 and content = #{content},当所有条件都不满足的时候就输出 otherwise 中的内容。
相关推荐
本文通过实例代码给大家介绍了Mybatis choose when用法,需要的的朋友参考下吧
choose, when, otherwise元素47 trim, where, set元素.... 48 Foreach元素..... 50 Java API....... 52 目录结构....52 SqlSessions...... 53 SqlSessionFactoryBuilder.. 53 SqlSessionFactory55 SqlSession.....57...
choose、when、otherwise 标签 set标签 trim标签 forEach标签 参数传递 单个参数传递 多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,...
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...
这是Mybatis由浅入深的第3节源码。 动态SQL是Mybatis的亮点功能之一,解决了根据不同条件拼接SQL的繁琐痛苦问题,避免了java代码和sql混在一起,是非常...2. choose (when, otherwise) 3. trim(where, set) 4. foreach
MyBatis 动态 SQL 通过使用 、<choose>、<when>、、、<set> 等标签来实现。以下是一些常见的动态 SQL 标签及其用法,通过组合使用这些标签,可以编写出非常灵活和强大的 SQL 语句,以适应不同的查询和更新需求。
MyBatis 动态 SQL 通过使用 、<choose>、<when>、、、<set> 等标签来实现。附件是一些常见的动态 SQL 标签及其用法,通过组合使用这些标签,可以编写出非常灵活和强大的 SQL 语句,以适应不同的查询和更新需求。
使用、<choose>、<when>、、、等元素构建动态SQL。 动态SQL的应用场景和实例。 6. 注解配置: 使用注解代替XML映射器文件。 常用的注解如@Select、@Insert、@Update、@Delete。 7. 一级缓存与二级缓存: 一级缓存...
MyBatis的动态SQL主要通过XML标签来实现,这些标签包括、<choose>、<when>、、、、等。这些标签可以单独使用,也可以组合使用,以构建复杂的动态SQL逻辑。例如,使用标签可以根据某个条件的真假来决定是否包含某个...
什么是MyBatis?............................................................................................................. 5 入门........................................................................
使用 、<choose>、<when>、<otherwise> 构建动态 SQL。 动态 SQL 的应用场景和语法示例。 5. 注解配置 使用注解替代映射器文件。 常用注解:@Select、@Insert、@Update、@Delete。 6. 一级缓存与二级缓存 一级缓存...
它允许开发者在XML映射文件中定义SQL模板,并通过预定义的标签如、<choose>、<when>和等,根据传入的参数动态地生成SQL语句。这样,同一个SQL映射文件就可以处理多种不同的业务场景,极大地提高了代码的复用性和可...
在 MyBatis 中,可以使用 `<if>`、`<choose>`、`<when>`、`<otherwise>` 等标签来实现动态 SQL。以下是一个简单的示例: ```xml SELECT * FROM user != null and username != ''"> AND username = #{username...
choose, when, otherwise \ 40 trim, where, set \ 41 foreach \ 43 Java API \ 44 应用目录结构\ 44 SqlSessions \ 45 SqlSessionFactoryBuilder \ 45 SqlSessionFactory\ 47 SqlSession \ 48 ...
MyBatis提供了多种元素来实现动态SQL,如、<choose>、<when>、、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,标签可以根据条件判断是否包含某个SQL片段,<choose>、<when>、则...
MyBatis提供了多种元素来实现动态SQL,如、<choose>、<when>、、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否成立,从而决定是否添加某个SQL...
MyBatis 提供了强大的动态 SQL 功能,它允许你根据参数的值来动态地构建...<choose>, <when>, <otherwise>:类似于 Java 中的 switch-case-default 结构。 xml <select id="findUsersByType" resultType="User"> SEL
MyBatis提供了多种元素来实现动态SQL,如、<choose>、<when>、、、、等。这些元素可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否成立,从而决定是否添加某个SQL...
其中,最常用的标签包括、<choose>、<when>、、、、等。这些标签可以单独使用,也可以组合使用,以实现复杂的动态SQL逻辑。例如,我们可以使用标签来判断某个条件是否满足,然后决定是否添加某个SQL片段;或者使用...