@Insert("<script> insert into USER(xxx,xxx,xxx) values "<foreach collection='users' item='user' index = 'index' separator=','>" + "(#{user.xxx},#{user.xxx},#{user.xxx}) " + "</foreach> </script>") @Options(useGeneratedKeys = true,keyColumn = "ID", keyProperty = "users.id") int batchInsert(@Param("users")List<User> users);
注解方式 - 注意點 :
keyColumn 表示數據庫表主鍵字段, 適用mysql的自增主鍵
keyProperty 表示實體主鍵字段 ,必須要加users,不然mybatis 不知道把主鍵賦值給哪個參數
@Param("users") 必須加上
批量插入后, 返回的主鍵都賦值給了users列表,通過users既可獲取所有的主鍵Id,進行下一步操作
XML 方式 :
void batchInsert(List<User> list); <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> insert into USER( XXX, XXX, XXX ) values <foreach collection="list" item="user" separator=","> ( #{userxxx}, #{userxxx}, #{user.xxx} ) </foreach> </insert>
dao層不需要@Param注解,使用集合用 list命名