文笔者讲述MySQL数据库批量插入数据的方法分享,如下所示
MySQL批量插入的应用场景
在一些数据导入的操作时
通常是多条数据一次性插入至数据库中,那么如何实现这类需求呢?
下文笔者将一一道来,如下所示
例:
Excel导入数据至数据库
Controller层接收导入的Excel数据
@PostMapping("/importUser")
public AjaxResult importUser(MultipartFile file) throws Exception{
GeneralListener<User> generalListener = new GeneralListener<>();
EasyExcel.read(file.getInputStream(),User.class,generalListener).sheet().doRead();
List<User> courseInfoList = generalListener.getList();
userService.insertCourseByBatch(userList);
return AjaxResult.success();
}
mapper.xml的SQL语句 及service、domain层
mapper.java
@Mapper
public interface UserInfoMapper {
void insertUserByBatch(@Param("list") List<CourseInfo> list);
}
mapper.xml代码如下:
<insert id="insertUserByBatch" parameterType="java.util.List">
insert into User_info (id,userno,userName)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},#{item.userno,jdbcType=VARCHAR},#{item.username,jdbcType=VARCHAR})
</foreach>
</insert>
注意事项:
数据类型后面需加上jdbcType
否则会产生相应的错误信息
批量插入优点
批量插入效率比单次插入要高很多
能节省大约2/3的时间
批量插入的优点:
1.减少Mysql日志
2.减少mysql的解析次数
3.减少网络IO传输
4.减少事务的开启次数
5.注意max_allowed_packet值,最大数据包的值
全部评论