08.批量插入与批量删除
课程内容
批量插入、删除数据 在前端脚本中整理数据 在SQL中嵌入JS脚本 批量处理的条件
课程目标
在SQL中嵌入JS脚本,或在前端脚本中处理数据,实现批量操作
课程概要
批量插入、删除数据
有时,让用户一条一条地添加数据是非常不合理的,比如班级数据,班级名都是按递增规律来定的。
只要用户输入:某个年级有多少个班级,我们就可以知道每个班级的名称。
在Enhancer,有两种方法可以实现批量操作:
在前端脚本中整理数据
将处理后的数据存入到一个自定义变量,方便SQL引用
运行时桥输出:
[2019-05-03 21:52:00.377] [DEBUG] io - SQL 0:
INSERT INTO `class` ( `grade`, `slot`, `name` ) VALUES ?
[2019-05-03 21:52:00.377] [DEBUG] io - PARAMS:
[[["二",1,"二(1)班"],["二",2,"二(2)班"],["二",3,"二(3)班"],["二",4,"二(4)班"],["二",5,"二(5)班"],["二",6,"二(6)班"],["二",7,"二(7)班"],["二",8,"二(8)班"],["二",9,"二(9)班"],["二",10,"二(10)班"]]]
在SQL中嵌入JS脚本
本身就有一个变量,包含了需要的数据,通过map对其格式化
运行时桥输出:
[2019-05-03 21:58:58.111] [DEBUG] io - SQL 0:
UPDATE `class` SET `status` = 0 WHERE `id` in (?)
[2019-05-03 21:58:58.111] [DEBUG] io - PARAMS:
[[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]]
批量处理的条件
SQL支持
如上,两个例子都是SQL原本就支持批量的情况,我们对数据的处理最终是基于SQL的。
insert into支持最大不超过1000条的批量插入,in逻辑也是专门用于批量匹配。
数据格式
仔细观察桥输出的PARAMS,输出的是一个数组,如果有多个字段(一般是insert操作),这些字段组成一个数组,多条记录再组成二维数组;如果是单个字段(如in逻辑),可以直接使用一维数组。