mybatis使用foreach进行批量插入和删除操作

一、批量插入

1.mapper层

 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Param中的参数必须和mapper.xml中foreach的collection对应,若果不写@Param注解并且只传入一个list作为参数,则collection默认填list

2.mapper.xml

<insert id="insertBatchRoleUser">
    INSERT INTO MS_USER_ROLE(ID, ROLEID, USERID,
    STATUS, CREATETIME, UPDATETIME,
    DELETETIME, CREATERID, UPDATERID,
    DELETERID)
    VALUES
    <foreach collection="lists" item="user" separator=",">
      (
         #{user.id,jdbcType=VARCHAR}, #{user.roleid,jdbcType=VARCHAR}, #{user.userid,jdbcType=VARCHAR},
         #{user.status,jdbcType=INTEGER}, #{user.createtime,jdbcType=TIMESTAMP}, #{user.updatetime,jdbcType=TIMESTAMP},
         #{user.deletetime,jdbcType=TIMESTAMP}, #{user.createrid,jdbcType=VARCHAR}, #{user.updaterid,jdbcType=VARCHAR},
         #{user.deleterid,jdbcType=VARCHAR}
      )
    </foreach>
  </insert>

二、批量删除

1.mapper

int deleteBatchRoleUser(@Param("roleId") String roleId, @Param("list") List<String> userIds);

2.mapper.xml

<!-- 批量删除 -->
  <delete id="deleteBatchRoleUser">
      DELETE FROM MS_USER_ROLE WHERE ROLEID = #{roleId,jdbcType=VARCHAR} AND USERID IN
      <foreach collection="list" item="id" separator="," open="(" close=")">
        #{id,jdbcType=VARCHAR}
      </foreach>
  </delete>

原文地址:https://www.cnblogs.com/Amaris-Lin/p/8615977.html

时间: 2024-07-30 13:38:58

mybatis使用foreach进行批量插入和删除操作的相关文章

Mybatis 针对oracle的批量插入

xml文件参数对象: 1 public class Columns{ 2 private String basedate_code; 3 private String tableName; 4 private String codeDescribeindex; 5 private String codeInfoindex; 6 private String codePymindex; 7 private List<Info> infos; Dao层方法: public void bulkIns

二叉平衡树的插入和删除操作

1.      二叉平衡树 二叉排序树的时间复杂度和树的深度n有关.当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长度为(n+1)/2,查找效率比较低.提高查找效率,关键在于最大限度地降低树的深度n.因此需要在构成二叉排序树的过程中进行“平衡化”处理,使之成为二叉平衡树. 二叉平衡树,又称AVL树.它或者是一棵空树,或者是具有下列性质的树: 1)      具备二叉排序树的所有性质: 2)      左子树和右子树深度差的绝对值不超过1: 3)      左子树和右子树都是二叉

二叉查找树(二叉排序树)创建,插入,删除操作。

二叉排序树 二叉排序树是一个基础的树的数据结构.应用非常多. 它的特性就是,左孩子小于parent,右孩子大于parent. 寻找节点 寻找节点就是直接根据数值的大小,从root节点开始遍历,大于当前遍历节点就向它的右子树查找,相反则查找它的左子树.然后返回. 查找最大最小节点 直接根据root节点,遍历到最右就是最大节点,遍历到最左,就是最小节点. 插入节点 插入节点我这里插入的节点都会成为叶子节点.根据大小的关系向下遍历,遍历到最后的节点,然后插入就可以了. 删除节点 这里删除节点是相对麻烦

单链表实现“插入”和“删除”操作

在单链表中,又如何实现"插入"和"删除"操作呢? 插入操作: 假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针.为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中.根据插入操作的逻辑定义,还需修改结点a中的指针域,令其指向结点x,而结点x中的指针域应该指向b结点,从而实现3个元素a,b和x之间逻辑关系的变化. 假设s为指向结点x的指针.则上述指针修改用语句描述即为: s->next=p-

MyBatis Oracle 使用序列批量插入数据库

由于现在项目昨晚批处理作业抽取数据主键生成器出现了问题,紧急解决用序列作为主键.   底层使用MyBatis与Oracle 数据库库交互. 和度娘交谈了很久她都没有给出解决方案.为   此自己写了想了一种方式,没想到一次测试完全通过.   大致demo如下  java 代码  1 /** 2 * 文件名称: InsertBatch 3 * 内容摘要: 测试 MyBatis 使用序列批量插入 4 * 创 建 人: sunrise 5 * 创建日期:2015-6-18 下午9:16:06 6 * 修

Mybatis 3+Mysql 实现批量插入

终于实现了ibatis的批量插入,此方法插入3000条数据,比单条插入可以节省一半的时间 XML代码: <insert id="insertBatch" parameterType="ArrayList"> insert intouser(id,account,password,active,status,name,gender,active_date,expiry_date,type,remark,group_id,disable,exam_numbe

mybatis使用foreach进行批量保存

mysql下批量保存 mysql支持语法 inset into table values(),(),().... 可以使用foreach进行遍历保存第一种方法<insert id="addEmps" parameterType="queryVo" resultType="user"> insert into employee (last_name,email,gender) values <!-- foreach标签,进行遍历

闭散列表的查找、插入和删除操作的完整C代码

/*闭散列表的建立.查找.插入.删除*/ #include <stdio.h> #define NIL -1 //假设关键字为非负整数 #define DEL -2 typedef int KeyType; KeyType HashTable[13]; //便于验证算法,关键字个数假定为不超过13,哈希表长定为13 //关键字插入函数 void InsertHashTable(KeyType k) { for(int i=0; i<13; i++) if( NIL == HashTabl

单链表 - 插入和删除操作

下图展示了单链表的基本结构: head指针是链表的头指针,指向第一个节点,每个节点的next指针域指向下一个节点,最后一个节点的next指针域为NULL,在图中用0表示. 下面先来看程序(栈的链式存储实现,另外一个实现点这里)和对应的输出(注意输出前进行了链表反转(见<单链表反转>,否则程序后面的while循环输出的顺序是250,200,100),接着来分析程序: C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22