mybatis 根据id批量删除的实现操作

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

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

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

int deleteByLogic(List list);

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

int deleteByLogic(int[] array);

<foreach item="item" collection="array" open="(" separator="," close=")">
      #{item}
</foreach>

第二种,直接在service中将数据给分装传递到mapper中

前端封装为以,为分隔符的id字符串。调用下方工具类。生成数据类型为(‘12',‘34'....)形式

 /**
 * StringUtil.getSqlInStrByStrArray()<BR>
 * <P>Author : wyp </P>
 * <P>Date : 2016年6月15日下午6:14:05</P>
 * <P>Desc : 数组字符串转换为SQL in 字符串拼接 </P>
 * @param strArray 数组字符串
 * @return SQL in 字符串
 */
 public static String getSqlInStrByStrArray(String str) {
 StringBuffer temp = new StringBuffer();
 if(StringUtils.isEmpty(str)){
  return "('')";
 }
 temp.append("(");
 if(StringUtils.isNotEmpty(str)){
  String[] strArray=str.split(",");
  if (strArray != null && strArray.length > 0 ) {
  for (int i = 0; i < strArray.length; i++) {
   temp.append("'");
   temp.append(strArray[i]);
   temp.append("'");
   if (i != (strArray.length-1) ) {
   temp.append(",");
   }
  }
  }
 }
 temp.append(")");
 return temp.toString();
 }

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

int deleteByLogic(String ids); 

<delete id="deleteByLogic" parameterType = "java.util.List">
   delete from user where 1>2
     or id in ${ids}
</delete>

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

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

补充知识:mybatis中一次执行多条SQL语句,例如一次性删除多条数据

1.首先在数据库连接URL上加上allowMultiQueries=true,默认mysql是不支持一次执行多条SQL语句的。

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true

2.在delete节点中添加多条语句:

 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
   delete from music_favorite where id = #{id,jdbcType=INTEGER};
   delete from music_favorite_song where f_id = #{id,jdbcType=INTEGER};
 </delete>

这可以用在mybatis的级联关系删除上,删除主表记录前,先删除关联表的记录,两条一起执行。

以上这篇mybatis 根据id批量删除的实现操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MybatisPlus,无XML分分钟实现CRUD操作

    不讲太多理论知识,官网都有,直接上手. 1.测试表 DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint(20) UNSIGNED NOT NULL, `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户名', `password` varchar(18) CHARACTER SET utf8 COLLA

  • mybatis中批量插入的两种方式(高效插入)

    MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 一.mybiats foreach标签 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主

  • 详解mybatis 批量更新数据两种方法效率对比

    上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方式有两种, 一种用for循环通过循环传过来的参数集合,循环出N条sql, 另一种 用mysql的case when 条件判断变相的进行批量更新 下面进行实现. 注意第一种方法要想成功,需要在db链接url后面带一个参数  &allowMultiQueries=true 即:  jdbc:mysql://localhost:3306/mysqlTest?characterEncoding=utf-8&allowMulti

  • 利用MyBatis实现条件查询的方法汇总

    SQL映射文件 Mybatis真正强大的是在于它的SQL映射语句,也是它的流弊之处. 它的功能强大,SQL映射文件的配置却比较简单. 使用SQL映射文件可以减少50%以上的代码量. Mybatis专注于SQL,对于开发人员来说可极大限度地进行SQL调优,以保证性能,下面是SQL映射文件的几个顶级元素配置 1.mapper 它是映射文件的根节点,只有一个属性就是 namespace(命名空间)它的作用是区分不同的mapper,里面的参数是全局唯一的,绑定DAO层接口,即面向接口编程 namespa

  • mybatis 根据id批量删除的实现操作

    第一种,直接传递给mapper.xml 集合/数组形式 <delete id="deleteByLogic" parameterType = "java.util.List"> delete from user where 1>2 or id in <foreach collection="list" item="item" open="(" separator=",&qu

  • Mybatis批量删除数据操作方法

    MyBatis的作用我想不用多说,今天说说MyBatis中的批量删除操作.废话不多说,先给大家一段代码片段! <delete id="deleteByStandardIds"> delete from t_standard_catalog where standard_id in <foreach collection="array" item="standardId" open="(" close=&quo

  • MyBatis 多个条件使用Map传递参数进行批量删除方式

    目录 多个条件使用Map传递参数进行批量删除 1.使用场景 2.代码实现 3.实现结果展现 MyBatis 多条件批量删除的sql语句 我把这次的代码贴出来,仅供参考 多个条件使用Map传递参数进行批量删除 1.使用场景 因为项目需要针对资源文件(视频.音频.文档),编辑时候可能出现以下3种情况: 实现的项目效果图: 1.1.删除多个已经选择的标签(与本次文章相关内容) 1.2.新增标签(选择已有标签作为新增,输入新的标签作为新增的) 因为本业务场景之中与此文章相关的内容 重点介绍一下如何,使用

  • Mybatis 如何批量删除数据的实现示例

    本期以最常用的根据id批量删除数据为例: 接口设计1:List类型单参数 Integer deleteByIds(List<Integer> ids); 接口设计2:Array数组类型单参数 Integer deleteByIds(Integer[] ids); 接口设计3:可变长度参数 Integer deleteByIds(Integer... ids); 此以接口2为例子mapper.xml配置如下: <delete id="deleteByIds"> D

  • Mybatis批量删除多表

    一. 这里主要考虑两种参数类型:数组或者集合. 而这点区别主要体现在EmpMapper.xml文件中标签的collection属性: 当collection="array"时,表名参数为数组; 当collection="list"时,表名参数为集合. 二. 注意: 无论Mybatis是与mysql数据库结合,还是与Oracle数据库,都同样适合如下设置与操作. 三. 具体示例如下: EmpMapper.xml: <!-- 批量删除员工信息 --> <

  • php批量删除操作代码分享

    批量删除多条记录,对于比较多的信息,如果没有批量删除功能是非常麻烦的. 1.从数据库中拿一张表过来,写个复选框进行选择 可以加全选复选框 连接数据库什么的都不写啦 代码: <form action="piliangshanchu.php" method="post" > <table border="1" cellspacing="0" cellpadding="0"> <tr

  • JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享

    效果展示: 代码实现: 控制器 <?php namespace app\controllers; use Yii; use yii\filters\AccessControl; use yii\web\Controller; use yii\filters\VerbFilter; use app\models\LoginForm; use app\models\ContactForm; //use yii\db\ActiveRecord; use yii\data\Pagination; use

  • PHP批量删除jQuery操作

    效果图如下所述: ->->-> ->->-> 创建视图show.php <?php header('content-type:text/html;charset=utf-8'); $pdo=new PDO('mysql:host=localhost;dbname=***;','root','root'); $pdo->exec('set names utf8'); $sql='select * from ***'; $info=$pdo->query(

  • mybatis postgresql 批量删除操作方法

    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统.POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中.PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询.外键.触发器.视图.事务完整性.多版本并发控制等.同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型.函数.操作符.聚集函数.索引方法.过程

  • Mybatis如何使用动态语句实现批量删除(delete结合foreach)

    目录 下面我将演示如何使用动态语句批量删除数据库数据 下面是项目的结构 1.IEmpDAO.java为接口提供批量删除数据方法 2.EmpDAOImpl.java为接口的实现类 3.MybatisSqlSessionFactory.java 4.Emp.java为实体类 5.Emp.xml为映射文件 6.mybatis_cfg.xml为mybatis主配置文件 7.pom.xml为maven引入依赖的文件 8.Test.java为测试类 下面我将演示如何使用动态语句批量删除数据库数据 本人在数据

随机推荐