【Mysql】mybatis如何对mysql数据库进行批量插入呢?

441人浏览 / 0人评论 / 添加收藏

文笔者讲述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值,最大数据包的值 
 

全部评论