mybatis如何对mysql数据库进行批量插入呢?
下文笔者讲述MySQL数据库批量插入数据的方法分享,如下所示
Excel导入数据至数据库
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值,最大数据包的值
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。