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>
相关推荐
Mybatis choose when语句的基本语法结构为:<choose>标签中包含一个或多个<when>标签和一个<otherwise>标签,用于指定不同的条件和对应的SQL语句。例如: ```xml <choose> <when test="cityId == '00' "> <!-- ...
choose、when、otherwise 标签 set标签 trim标签 forEach标签 参数传递 单个参数传递 多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,...
12. **动态SQL**:MyBatis提供了强大的动态SQL功能,允许在XML映射文件中直接编写条件语句,如if、choose、when、otherwise等。 13. **缓存**:MyBatis支持本地缓存和二级缓存,可以提高数据读取速度,减少数据库...
4. **动态SQL助手**:支持自动生成动态SQL的if、choose、when、otherwise等标签,使动态SQL的编写变得简单直观。 5. **条件查询构建**:插件能帮助构建复杂的条件查询,通过简单的拖拽操作即可生成对应的XML片段,...
- **动态 SQL**:通过 `<if>`、`<choose>`、`<when>`、`<otherwise>`、`<foreach>` 等标签实现 SQL 语句的动态生成。 - **结果映射(ResultMap)**:用于复杂对象的映射,处理一对一、一对多、多对多等关系。 4. ...
在 XML 映射文件中,我们可以使用 `<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<foreach>` 等标签来构建动态 SQL。这些标签可以让我们根据不同的条件拼接 SQL 语句,使得 SQL 更加灵活且易于管理。 ...
对于MyBatis的动态SQL块(如if、choose、when、otherwise等),MybatisX提供了一键生成功能,可以快速插入常用的动态标签,加快开发速度。 4. Mapper XML导航: MybatisX可以快速定位Mapper XML文件中的方法,...
MyBatis通过`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等标签来实现动态SQL的构建。 1. `<if>`标签:用于判断某个条件是否成立,如果成立则插入相应的SQL片段。例如,当查询...
MyBatis 提供了强大的映射元素,如`<resultMap>`用于定义结果集映射,`<association>`和`<collection>`用于处理复杂对象关系,以及`<choose>`, `<when>`, `<otherwise>`等结构,实现类似Java的if-else逻辑。...
- if、choose、when、otherwise:根据不同的条件判断,动态地加入SQL片段。 - trim、where、set:动态地处理SQL语句的前后缀。 - foreach:用于处理遍历集合或数组,并动态地加入SQL片段。 8. Java API MyBatis还...
通过`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等标签,可以在映射文件中编写条件语句、循环语句等,使SQL更具灵活性和可扩展性。 七、缓存机制 MyBatis内置了本地缓存和二级...
例如,使用`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签进行条件判断,使得一个映射文件可以处理多种不同的查询场景。 事务管理是MyBatis中的另一个关键点。在MyBatis中,你可以手动管理事务,或者配置`...
Mybatis的动态SQL功能非常强大,可以在映射文件中使用`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`、`<set>`等标签来构建条件语句,使得SQL语句可以根据实际参数动态生成。 6. **Executor执行器** ...
2. 动态SQL:Mybatis支持动态SQL,允许在XML映射文件中使用条件语句,例如`if`, `choose`, `when`, `otherwise`, `where`, `trim`, `foreach`等标签,这些可以方便地根据业务需求构建灵活的查询条件。 3. 参数映射...
- MyBatis 的强大之处在于其支持动态 SQL,通过 if、choose、when、otherwise、foreach 等标签,可以在 XML 映射文件中编写复杂的条件判断和循环。 8. **缓存机制** - MyBatis 提供了本地缓存(Local Cache)和二...
3. **动态SQL**:MyBatis的动态SQL功能强大,可以在XML映射文件中使用if、choose、when、otherwise等元素编写灵活的条件查询。 4. **缓存机制**:MyBatis内置了两级缓存,一级缓存是SqlSession级别的,二级缓存则是...
- MyBatis 提供了强大的动态 SQL 功能,如 `<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>` 等标签,可以动态地生成 SQL 语句。 5. **参数映射与结果映射**: - `<parameterMap>`...
MyBatis还支持动态SQL,这使得在XML映射文件中可以编写条件语句,比如IF、WHERE、choose(when/otherwise)、trim(where/sets/foreach)等元素,极大地提高了SQL的灵活性。 此外,MyBatis的注解方式也是常用的一种...
4. **动态SQL**:MyBatis的动态SQL功能非常强大,允许在XML映射文件中使用条件语句、if、choose、when、otherwise等标签实现SQL的动态拼接,这极大地提高了SQL的灵活性。 5. **依赖管理**:在描述中提到的mybatis-...
例如,可以使用if、choose、when、otherwise等元素来实现条件判断,减少代码重复。 此外,MyBatis的参数映射和结果映射功能简化了数据访问层的工作。通过@Param和@ResultMap注解,可以自动将方法参数映射到SQL语句...