mybatis动态sql

目录

 动态sql

 简介

where if元素

  choose、when、otherwise元素:

  foreach元素

  trim元素: 


 

 动态sql

 简介

MyBatis提供了强大的动态SQL语句功能,可以根据条件动态生成SQL语句,方便灵活地拼接和使用不同的查询条件。以下是MyBatis中常用的动态SQL语句的几种方式:

where if元素

<select id="getUserList" resultType="User">
  SELECT * FROM users
  WHERE 1=1
  <if test="name != null">
    AND name = #{name}
  </if>
  <if test="age != null">
    AND age = #{age}
  </if>
</select>

    上述示例中,如果传入参数中有name,则会拼接AND name = #{name}这部分SQL语句;如果有age,则拼接AND age = #{age}这部分SQL语句。

  choose、when、otherwise元素:

choose元素类似于Java中的switch语句,可以根据条件选择不同的分支。示例:

<select id="getUserList" resultType="User">
  SELECT * FROM users
  WHERE 1=1
  <choose>
    <when test="name != null">
      AND name = #{name}
    </when>
    <when test="age != null">
      AND age = #{age}
    </when>
    <otherwise>
      AND status = 'active'
    </otherwise>
  </choose>
</select>

     上述示例中,choose元素会根据条件选择不同的分支,当name不为null时,拼接AND name = #{name};当age不为null时,拼接AND age = #{age};否则,拼接AND status = 'active'。

  foreach元素

foreach元素可以用于循环遍历集合或数组,并在SQL语句中使用。示例

<select id="getUserList" resultType="User">
  SELECT * FROM users
  WHERE id IN
  <foreach collection="userIds" item="id" open="(" separator="," close=")">
    #{id}
  </foreach>
</select>

上述示例中,foreach元素会将userIds集合中的每个元素拼接到IN条件中,生成类似于WHERE id IN (1, 2, 3)的SQL语句。 

  trim元素: 

trim元素可以用于去除SQL语句的开头或结尾的特定字符串,并根据条件添加新的字符串。示例

<select id="getUserList" resultType="User">
  SELECT *
  FROM users
  <trim prefix="WHERE" prefixOverrides="AND |OR ">
    <if test="name != null">
      AND name = #{name}
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
  </trim>
</select>

上述示例中,trim元素会去除开头的WHERE,并根据条件动态添加AND name = #{name}和AND age = #{age}。

通过使用这些动态SQL语句的方式,可以根据不同的条件生成灵活的SQL语句,提高查询的灵活性和可维护性。这些方式可以组合使用,根据实际需要进行灵活配置

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张有财Java成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值