众所周知,mysql插入如果想一次性插入很多条数据,有三种方式,
第一种:一个for遍历进行单条插入
第二种:一个for遍历进行定数插入
第三种:一次性全部插入
分析:
每种方式都有自己的好处,和自己的坏处,比如第一种书写简单,快速理解,就是直接调用save方法就行了嘛,第二种,好处批量插入,省时,省力,而且不会造成大量插入把数据库卡死,第三种好处和第二个一样,就是会发生大量数据插入数据库崩溃。
案例1
mapper.xml
<insert id="batchUserRole">
insert into sys_user_role(user_id, role_id) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.userId},#{item.roleId})
</foreach>
</insert>
mapper
public int batchUserRole(List<SysUserRole> userRoleList);
案例二
<insert id="batchUserRole">
insert into sys_user_role(user_id, role_id) values
(#{item.userId},#{item.roleId}))
</insert>
案例三
@Data
@Table(name = "user")
public class User {
@Id
@KeySql(useGeneratedKeys = true)
private Integer id;
private String username;
private String desc;
}
public interface UserMapper extends InsertListMapper<User> {
}