批量插入返回自增ID列表和普通插入返回自增ID是一样的,通常只需要在 mapper.xml 的 上添加属性 useGeneratedKeys=“true” keyProperty=“id” 就能实现插入成功后,mybatis 会把获得的自增ID set 到对象里,如自动 set 到 user 对象的 id 属性里,而非通过返回值获得ID或ID列表。
Dao
void insertBatch(List<User> users); // 批量插入
Mapper.xml
<insert id="insertBatch" useGeneratedKeys="true" keyColumn="user_id" keyProperty="userId" parameterType="java.util.List">
insert into user
(user_name, age)
values
<foreach collection="list" separator="," item="item">
(
#{item.userName, item.age}
)
</foreach>
</insert>
需要注意
关于这个批量导入返回id列表需要注意以下几点
1、确保 mybatis 版本在 3.3.1 以上
2、batchInsert 方法上不能加 @param()
3、batchInsert 方法只能一个参数
4、batchInsert 返回值为 Integer 或 void,不能写 List
5、如果你的自增id数据库字段和实体类属性不一致,如 user_id 和 userId, 需要写成useGeneratedKeys=“true” keyColumn=“user_id” keyProperty=“userId”