mybatis返回主键,批量插入

mybatis在返回主键的时候分两种情况,一总是针对自增型主键,一种是分自增型主键。接下来我们分别讲讲这两种情况应该怎么应用。

1。针对主键自增的时候。
mybatis返回主键,批量插入_第1张图片

2.针对非自增的主键。
mybatis返回主键,批量插入_第2张图片
这里面属性的作用跟自增主键一样,其中order=”before”表示实在插入之前返回主键。

3。关于一个批量插入的时候需要注意的小知识点。
首先讲讲,批量查询的时候
mybatis返回主键,批量插入_第3张图片
这里看到有一个循环 ,里面有一个open,close,separator属性,加上这几个以后循环出来的数据格式就是。
select * from User where id in(1,2,3,4,5)形式,在批量查询的时候没有什么问题。符合语法的规范,但是在批量插入的时候。如果我们这样写就会出现一些问题。
正确的插入语法是
insert into User (id,name,password,age) values(xx,xx,xx,xx),(xx,xx,xxx,xx,xx);
但是如果我们继续用上面的语句就有问题。
我原来出现过的两个问题。
1。
这个循环出来的结果,跟查询一样id in (x,x,x,x,x,x,x).可以看到跟我们的插入语法是不对的,所以插入肯定是错误的。
2。
(#{ids},”aa”,”bb”)

然后我又改成这个样子,但是还是出现了问题。再来分析这个sql。
insert into User (id,name,password) values((“id1”,”aa”,”bb”),(“id2”,”aa”,”bb”));
这次可以看到问题了,多了一对括号。所以接下来我们这样修改就可以了。

正确批量插入sql


(#{ids},”aa”,”bb”)

insert into User values(id1,aa,bb),(id2,aa,bb),(id2,aa,bb)

你可能感兴趣的:(mybatis)