foreach标签是使用举例
在实际应用中,我常常需要根据多个id批量的操作:
查询指定id的记录:
这时就可以用foreach标签:
collection="ids" : 接口上传过来的数值或list集合或者map集合都可以
item="id" :设定遍历集合或数组里的每一个值的迭代变量
separator="," : 因为要构造出 (1,2,3)这种样子的字符串,设定中间的分隔符
open="(" : 因为要构造出 (1,2,3)这种样子的字符串,设定前缀的符号(
close=")": 因为要构造出 (1,2,3)这种样子的字符串,设计结尾的后缀)
index: 还有这个属性,数组或list集合的时候,设置索引变量,如果是Map集合就是map的key的迭代变量,这里的例子用不着这个。
Mysql数据库小批量保存记录
批量保存的sql语句,可以这么写!所以,我们可以利用foreache标签来对values后面的部分构造出来:
也可以循环整个insert语句在线文档-mysql-5.1-zh:
但这样写,mysql数据库要求链接字符串要跟上链接属性allowMultiQueries:
Oracle数据库小批量保存记录:
Oracle数据库和Mysql数据库不一样,它不支持insert...values(),(),()这种写法,它支持的是以下的begin...end和中间表的两种写法:
①begin...end的写法,中间的insert语句用分号分割:
begin
INSERT INTO sb_users (id,username,password,state,reg_date)
VALUES (40,'aa','aa',1,to_date('2018-12-1','yyyy-mm-dd'));
INSERT INTO sb_users (id,username,password,state,reg_date)
VALUES (41,'bb','bb',1,to_date('2018-12-2','yyyy-mm-dd'));
INSERT INTO sb_users (id,username,password,state,reg_date)
VALUES (42,'aa','aa',1,to_date('2018-12-3','yyyy-mm-dd'));
end;
②中间表的写法:
INSERT INTO sb_users (id,username,password,state,reg_date)
select USERID_SEQ.nextval,username,password,state,regDate FROM(
select 'testaa' username,'123aa' password,1 state,to_date('2018-12-1','yyyy-mm-dd') regDate from dual
union
select 'testbb' username,'123bb' password,1 state,to_date('2018-12-1','yyyy-mm-dd') regDate from dual
union
select 'testcc' username,'123cc' password,1 state,to_date('2018-12-1','yyyy-mm-dd') regDate from dual
)