原文:https://blog.csdn.net/qq_40010745/article/details/81032218

mybatis 根据id批量删除的两种方法

 

第一种,直接传递给mapper.xml  集合/数组形式

  1. <delete id="deleteByLogic" parameterType = "java.util.List">
  2. delete from user where 1>2
  3.     or id in
  4. <foreach collection="list" item="item" open="(" separator="," close=")" >
  5.      #{item}
  6. </foreach>
  7. </delete>
 

1.     如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

int deleteByLogic(List list);

2.     如果传入的是单参数且参数类型是一个array数组的时候, 参数类型为parameterType="int"     集合    collection的属性值为array

int deleteByLogic(int[] array);
 
  1. <foreach item="item" collection="array" open="(" separator="," close=")">
  2. #{item}
  3. </foreach>

第二种,直接在service中将数据给分装传递到mapper中
    前端封装为以,为分隔符的id字符串。调用下方工具类。生成数据类型为(‘12’,‘34’....)形式

  1. /**
  2. * StringUtil.getSqlInStrByStrArray()<BR>
  3. * <P>Author : wyp </P>
  4. * <P>Date : 2016年6月15日下午6:14:05</P>
  5. * <P>Desc : 数组字符串转换为SQL in 字符串拼接 </P>
  6. * @param strArray 数组字符串
  7. * @return SQL in 字符串
  8. */
  9. public static String getSqlInStrByStrArray(String str) {
  10. StringBuffer temp = new StringBuffer();
  11. if(StringUtils.isEmpty(str)){
  12. return "('')";
  13. }
  14. temp.append("(");
  15. if(StringUtils.isNotEmpty(str)){
  16. String[] strArray=str.split(",");
  17. if (strArray != null && strArray.length > 0 ) {
  18. for (int i = 0; i < strArray.length; i++) {
  19. temp.append("'");
  20. temp.append(strArray[i]);
  21. temp.append("'");
  22. if (i != (strArray.length-1) ) {
  23. temp.append(",");
  24. }
  25. }
  26. }
  27. }
  28. temp.append(")");
  29. return temp.toString();
  30. }
  31.  

在mapper中直接使用 $ 符号接收即可

int deleteByLogic(String ids);
  1. <delete id="deleteByLogic" parameterType = "java.util.List">
  2. delete from user where 1>2
  3. or id in ${ids}
  4. </delete>

还有第三种。不过比较浪费资源

        直接在service中循环调用mapper中的delete方法。.....

mybatis 根据id批量删除的两种方法的更多相关文章

  1. oracle多表关联删除的两种方法

    oracle多表关联删除的两种方法 第一种使用exists方法 delete from tableA where exits ( select 1 from tableB Where tableA.i ...

  2. mybatis学习之路----批量更新数据两种方法效率对比

    原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方 ...

  3. 【ADO.NET-中级】百万级数据的批量插入的两种方法测试

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  4. VIM 批量注释的两种方法 (转)

    方法一 ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I(shift+i),再插入注释符,比如"//",再按Esc,就会全部注释了 批 ...

  5. mysql批量update的两种方法

    today a question let me happy(抓狂) 头儿分了一个小任务,让修改循环调用dao层的那些不啦不啦不啦,鉴于之前写过批量更新的玩意,so 很快代码就修改完了,but 测的时候 ...

  6. c#mysql批量更新的两种方法

    总体而言update 更新上传速度还是慢. 1:  简单的insert  速度稍稍比MySqlDataAdapter慢一点 配合dapper 配置文件 <?xml version="1 ...

  7. Windows文件自删除的两种方法

    可执行模块的自删除技术已经被讨论的很多, 有很多极富创意的思路和想法被提出, 但有些似是而非的方案往往使人误入歧途. 举个例子来说, 很多文章认为下面的一小段代码可以实现自删除:void main(v ...

  8. C# 批量新增的两种方法。

    public class Test { private static readonly string strConnection = ""; public static void ...

  9. Mybatis新增返回主键的两种方法 (mysql)

    1.自增:LAST_INSERT_ID (自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCREMENT列设置的第一个 发生的值.) <!-- mysql的自增ID :LAS ...

随机推荐

  1. 【movable-area、movable-view】 可移动区域组件说明

    movable-area.movable-view 可移动区域组件 原型: <movable-area scale-area="[Boolean]"> <mova ...

  2. html常用小知识

    请求重定向:加载页面之后,除了用js做重定向之外,我们还可以直接用<meta>标签做重定向. <meta http-equiv="refresh" content ...

  3. Python3 Tkinter-Checkbutton

    1.多选按钮创建 from tkinter import * root=Tk() Checkbutton(root,text='python').pack() root.mainloop() 2.绑定 ...

  4. 关于ES6-{块级作用域 let const 解构赋值 数组 字符串 函数的扩展 箭头函数}

    关于ES6 块级作用域 任何一对花括号({})中的语句集都属于一个块,在块中声明的变量在代码块外都是不可访问的,称之为块级作用域,ES5以前没有块级作用域 let let 是ES6新增的声明变量的一种 ...

  5. java多线程三之线程协作与通信实例

    多线程的难点主要就是多线程通信协作这一块了,前面笔记二中提到了常见的同步方法,这里主要是进行实例学习了,今天总结了一下3个实例: 1.银行存款与提款多线程实现,使用Lock锁和条件Condition. ...

  6. 20145214 《Java程序设计》第1周学习总结

    20145214 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 了解了Java的诞生和版本演进的历史,目前的最新版本是Java SE8. java的三大平台分别是Java ...

  7. Thrift IDL使用方式

    I.背景 众所周知,Thrift是一个RPC的框架,其可用于不同语言之间的服务相互调用.比如最近接触到的一个运用环境: *前端使用Node.Js重构了部分我们的老旧代码(前后端未分离的SpringBo ...

  8. 3ds Max学习日记(二)

      搞了一天终于把第二章弄完了,虽然有点慢,但也是没有办法,毕竟中途学累了总得放松一下吧.   又get到了一个新知识点,是关于3ds max的捕捉工具的,详情见3DS MAX 学习笔记 一(捕捉工具 ...

  9. go的IO函数,整理下最基本的IO处理函数,工欲善其事必先利其器

    bufio.NewScanner()函数是一行一行地读,但是对/proc/函数,这里不是个好方法,最好是把所有的数据一次读完,然后再去读,有没有这样读的接口呢?把所有数据都读入到内存中然后再通过通过搜 ...

  10. [剑指Offer] 48.不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2.第二步:计算进 ...