JDBC有批处理,mybatis中的foreach标签也支持批处理,功能非常强大,在动态sql中是很重要的一员,今天就给大家来讲一下foreach标签。
<foreach collection="***" item="***" index="***" separator="***" open="***" close="***">
collection:要遍历的集合或者数组名
item:代表着集合遍历中的每一项
index:表示当前项在list或者array中的索引
separator:表示两项之间的分隔符
open:以什么statement开头
close:以什么statement结尾
这里谈一下mybatis中多种情况下collection中写什么的问题
1.单参数的数组写array
2.单参数的集合写list
3.如果封装到map或者集合位于对象中,则填写map的key或者对象的属性名
另外呢,今天还碰到了一个问题,就是用foreach进行批量插入,同时要求将自增主键自动注入到入参里面去,记录一下需要注意的几个问题:
1.mybatis的版本不能太低
2.参数必须是单list,不能是map或者对象
3.不能在dao(mapper)中使用@Param注解
另外呢,在批量插入时,并不会因为其中的某一条失败,事务就会回滚,同时返回影响的行数呢,只会返回最后一条记录插入影响的行数,也就是0或者1,从而我们在对批处理插入时,判断是否插入成功时,需要注意,要做一些额外的处理。