Mybatis 批量插入数据
今天需要插入批量数据,因为使用多线程插入比较慢,所以采用批量插入的方式。
然后今日学习了如何在mybatis中进行批量插入,其实主要就是sql的语法insert into tableName1 (column1,column2) values (“字段1”,“字段2”),(“字段1”,“字段2”)
所以可以借助mybatis的foreach语句进行。
假设存在如下表对应的实体类
@Data
@RequiredArgsConstructor(staticName = "of")
@Accessors(chain = true)
public class User {
private String name;
private Integer age;
private Date birthday;
}
测试类如下,使用springboot 工程
@SpringBootTest
@RunWith(SpringRunner.class)
public class ListTest {
@Autowired
private UserMapper userMapper;
private List<User> list = new LinkedList<>();
@Before
public void method00() {
Date date = new Date();
list.add(User.of().setName("张三").setAge(11).setBirthday(date));
list.add(User.of().setName("李四").setAge(15).setBirthday(date));
list.add(User.of().setName("王五").setAge(18).setBirthday(date));
list.add(User.of().setName("王五").setAge(18).setBirthday(date));
list.add(User.of().setName("张三").setAge(21).setBirthday(date));
}
@Test
public void method04() {
int i = userMapper.insertBatch(list);
System.out.println("i = " + i);
}
}
mysql语句如下:
<insert id="insertBatch">
INSERT INTO t_user ( name, age, birthday )
VALUES
<foreach collection="list" separator="," item="e" index="index">
(
#{e.name} ,
#{e.age} ,
#{e.birthday}
)
</foreach>
</insert>