08-Mybatis 动态sql查询

本文详细介绍了 MyBatis 动态 SQL 查询的四大核心标签:if、choose (when, otherwise)、trim (where, set) 和 foreach 的使用方法,包括条件判断、逻辑组合、WHERE 和 SET 子句的动态生成以及 IN 子句和批量插入的应用。" 108158278,8651756,SwiftUI轮播图实现:基于UIPageViewController的实战教程,"['SwiftUI开发', 'iOS开发', 'UI设计', '滚动视图', '编程教程']

动态 SQL 是 MyBatis 的强大特性之一。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。

MyBatis 动态 SQL 查询是一种可以根据不同的查询条件生成不同 SQL 语句的功能,方便实现灵活的查询操作。

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

一、 if

<if> 标签是 MyBatis 动态 SQL 查询中使用最为广泛的一个标签,在查询条件比较复杂时,能够有效地帮助我们生成所需的 SQL 语句。

1.使用条件判断语句生成 SQL 片段

<select id="getUserList" resultMap="userResultMap">
  SELECT * FROM user
  <where>
    <if test="name != null">
      AND name = #{name}
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
  </where>
</select>

在上述代码中,我们使用了 <if> 标签来生成 SQL 片段,该标签内的 test 属性值为条件判断语句,当符合条件时就会执行 SQL 语句块内的内容。在上述代码中,我们通过判断 name 和 age 是否为 null,来动态生成 SQL 条件语句。

2.使用逻辑运算符组合多个条件

在上述代码中,我们只使用了单个条件,但实际查询中,多条件联合查询的情况比较常见。为此,我们可以使用 <if> 标签结合逻辑运算符来组合多个条件,例如:

<select id="getUserList" resultMap="userResultMap">
  SELECT * FROM user
  <where>
    <if test="name != null and name != ''">
      AND name like concat('%', #{name}, '%')
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
    <if test="sex != null and sex != ''">
      AND sex = #{sex}
    </if>
  &l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值