SpringBoot整合Mybatis之动态SQL

一、概念

Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能。它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。

二、if 标签

if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行,繁殖标签中的内容不会执行。

<!-- List<Dish> getDishByName(@Param("name") String name);-->
<select id="getDishByName" resultType="com.athorse.entities.Dish">
   select * from dish where 1=1
   <if test="name != null and name != ''">
      and name like "%"#{name}"%"
   </if>
</select>

三、choose标签

choose标签作用条件判断来拼接指定的条件,它和if不太相同,choose似类于java中的switch语句用法,直要有条件成立,其它判断将得不到执行,如果所有条件都不成立则执行otherwise标签中的内容。
格式:
<choose>
  <when test=条件1>
    执行的代码;
  </when>
<when test=条件2>
    执行的代码;
  </when>
  ......
  <otherwise>
      执行的代码;
  </when>
  </otherwise>
</choose>

四、foreach标签

1. 常用属性

collection:设置需要循环的数组或集合

item:表示数组或集合中的每一个数据

separator:循环体之间的分隔符

open:foreach标签所循环的所有内容的开始符

close:foreach标签所循环的所有内容的结束符

2. 批量删除方式一

<!--Integer deleteMore(@Param("ids") long[] ids);-->
    <delete id="deleteMore">
        delete from dish where id in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach>
    </delete>

3. 批量删除方式二

<!--Integer deleteMore(@Param("ids") long[] ids);-->
    <delete id="deleteMore">
        delete from dish where (
        <foreach collection="ids" item="id" separator="or" >
            id = #{id}
        </foreach>
        )
    </delete>

4. 批量新增

<insert id="insertBatch">
        insert into dish(name,category_id,price,code,image,description,sort) values
        <foreach collection="dishes" item="dish" separator=",">
            (#{dish.name},#{dish.categoryId},#{dish.price},#{dish.code},#{dish.image},#{dish.description},#{dish.sort})
        </foreach>
    </insert>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值