【Mybatis】动态SQL标签3

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
	)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值