MyBatis踩坑系列1:浅谈MyBatis的三种批量插入方式
序言
每个人在刚刚接触mybatis框架的时候,或多或少会写出一些令程序执行效率变慢的代码。例如:在for循环里写sql。博主刚刚开始写项目的时候,就写过一段双层for循环中做查询、插入、删除、修改的神操作。现在看来当时程序能够顺利上线得亏在于使用人数不多。我们都知道执行一条sql语句就需要访问数据库一次数据库,频繁和数据库进行交互,将是一个十分消耗服务器性能的行为。下面我将带大家带来三种mybatis批量插入的方式,以及各自的优缺点对比。
环境介绍
MySQL5.7+SpringBoot+mybatis+tkmapper
1.我是新手我怕谁——循环体中执行单条sql
在循环体中写入sql是我们新手入门的必经阶段,因为在循环体中写sql可以使得代码更加的直观,让自己的程序跟随自己的思路走下去,从而不增加代码的复杂度。那我们看一看这种方式在100万条插入数据下的表现吧
/**
* 循环体中的插入操作
* @param testList
* @return
*/
public long test1(List<Test> testList){
long start = System.currentTimeMillis();
for (Test test : testList) {
testMapper.insertSelective(test);
}
long end = System.currentTimeMillis();
return end-start;
}
执行结果: