ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

动态sql(foreach标签,实现批量删除,两种方式)

2022-06-29 09:03:06  阅读:332  来源: 互联网

标签:map 标签 ids user sql delete where id foreach


动态sql(foreach标签,实现批量删除)

批量删除sql的两种写法:

  1. delete from t_user where id in ids;ids为id的数组 sql1

  2. delete from t_user where id = ? or id =? or id =?; ids为数组 sql2

 

mybatis默认处理数组的方式:

1.以arg0或者array作为键,将数组封装成一个map,按键取值

我们也可以:

1.传入一个自定义map

2.@param注解

 

sql1的实现

delete from t_user where id in ids

<delete id="deleteMany">
  delete from t_user where id in
  <foreach collection="ids" item="id" separator="," open="(" close=")">
      #{id}
  </foreach>
</delete>
<foreach collection="ids" item="id" separator="," open="(" close=")">
collection="ids"                         接受List集合(mybatis默认的处理方式就按arg0、array接受,@param处理方式就按注解value值接受,自定义map方式就按键名接受,都不加#{}或者${})
item="id"                                List集合种每个元素都以id为键,因为是循环,所以一次只将一个元素的键设置为id
separator=","                            每次循环结果之间添加的分割符,分隔符号前后自带一个空格
open="(" close=")"                       循环开始前添加,循环结束时添加

sql2的实现

delete from t_user where id = ? or id =? or id =?

<delete id="deleteMany">
  delete from t_user where
  <foreach collection="ids" item="id" separator="or">           分割符换成了or,循环前后也不需要添加任何字符串
      id = #{id}
  </foreach>
</delete>

标签:map,标签,ids,user,sql,delete,where,id,foreach
来源: https://www.cnblogs.com/new228666/p/16421948.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有