1、DAO层
int addStorageBatch(List<Storage> storageList);
int updateStorageBatch(@Param("storageList") List<Storage> storageList);
2、xml文件
<insert id="addStorageBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
insert into storage (code,name,type,pid,gmt_create,gmt_modified,is_delete)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.code,jdbcType=VARCHAR},#{item.name,jdbcType=VARCHAR},
#{item.type,jdbcType=INTEGER},#{item.pid,jdbcType=VARCHAR},
#{item.gmtCreate,jdbcType=TIMESTAMP},#{item.gmtModified,jdbcType=TIMESTAMP},
#{item.isDelete,jdbcType=INTEGER}
)
</foreach>
</insert>
<update id="updateStorageBatch" parameterType="java.util.List">
<foreach collection="storageList" item="item" index="index" open="" close="" separator=";">
update storage
set
code=#{item.code},
name=#{item.name},
type=#{item.type},
pid=#{item.pid},
gmt_create=#{item.gmtCreate},
gmt_modified=#{item.gmtModified},
is_delete=#{item.isDelete}
where code = #{item.code}
</foreach>
</update>
3、批量添加返回主键
(1)service层,直接return 传入的集合,返回集合中会给主键赋值。
storageMapper.addStorageBatch(storageList); return storageList;
(2)DAO层,批量添加不能有@Param注解。
int addStorageBatch(List<Storage> storageList);
(3)xml文件
a、添加 useGeneratedKeys="true" keyProperty="id" ,keyProperty 主键参数:
<insert id="addStorageBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
b、collection 中为 list,不能写成DAO层中的storageList:
<foreach collection="list" item="item" index="index" separator=",">