很多时候我们要批量插入或者更新数据,很多人一般的做法就是在java逻辑bean中,循环批量的数据,一条一条插入。
现在介绍下mybatis的批量插入,即传入一个List类型的参数。
java类(逻辑类):假设我循环插入10条数据,在逻辑类中我模拟作了一个List。
SampleUser sampleUser = null; List<SampleUser> insertList = new ArrayList<SampleUser>(); for (int i = 0; i < 10; i++) { sampleUser = new SampleUser(); sampleUser.setUserId("list" + i); sampleUser.setPassword("password"); sampleUser.setUserName("list_name" + i); insertList.add(sampleUser); } return sampleUserMapper.insertByList(insertList);
SampleUserMapper类(mybatis接口类):
int insertByList(List<SampleUser> records);
SampleUserMapper.xml(mybatis sql文件中):
<insert id="insertByList" parameterType="java.util.List">
insert into sample_user (user_id, password, user_name)
values
<foreach collection="list" index="index" item="record" separator=",">
(#{record.userId,jdbcType=VARCHAR}, #{record.password,jdbcType=VARCHAR}, #{record.userName,jdbcType=VARCHAR})
</foreach>
</insert>
注意红色的地方,如果你传入的是List,则collection="list"。
并且可以获取返回值,经过测试返回值为10,DB中数据也插入。