数据库中mobile字段设置unique索引
插入的sql语句:
parameterType="java.util.List"
useGeneratedKeys="true"
keyProperty="id">
insert ignore into
plat_user (mobile) values
item="item"
index="index"
separator=",">
(#{item.mobile} )
打印插入后的list当mobile已存在的时候还是会莫名返回一个不存在的主键
例如:,mobile=18423134564,的数据数据库中已存在,
却还是反回了一个主键id(数据库中并未插入该id数据)
麻烦大佬讲解下这个id为什么会生成
以及keyProperty具体做了什么
有没有只返回插入成功的id
已存在的重复数据未插入成功的不返回id
实现通过id的有无来判断哪些插入成功,哪些mobile已存在插入失败
为什么要根据返回ID来判断是否成功?索引重复会直接报错的。你可以逐条插入,捕获特定异常处理插入失败
这你可能要看你批量插入的方式了
目前看起來最好知道有沒有插入成功的批量插入,莫属于addBatch(String sql)方法
与executeBatch()[I联用,来得知每一条插入有没有成功
至于上文提到的getGeneratedKeys(),个人认为太鸡肋了,插多少反回多少,插入失败也返回,根本没有节操,目前很多框架支持批量插入返回ID都是用这种方法
另外,如果你是用values (...),(...)...这种最快速的批量插入方式
除了插入成功条数之外其他的你都别想知道了