java如何向mysql数据库中进行批量新增?
1.controller代码:
@ApiOperation(value = "批量新增",httpMethod = "GET")
@GetMapping("/test10")
private void test10() {
//批量新增
userService.batchInsert();
}
2.service代码
//批量新增
@Override
public void batchInsert() {
List<User> userList = new LinkedList<>();
for(int i = 0;i < 100000; i++){
User user = new User();
String iStr = String.valueOf(i);
user.setId(iStr);
user.setAccount(iStr);
user.setPwd(iStr);
userList.add(user);
}
userMapper.delete(new QueryWrapper<>());
this.batchInsert1(userList);
userMapper.delete(new QueryWrapper<>());
this.batchInsert2(userList);
}
//for循环新增(一般在数据量小,不需要考虑性能的情况下使用)
private void batchInsert1(List<User> userList) {
long start = System.currentTimeMillis();
for(User user : userList){
userMapper.insert(user);
}
long end = System.currentTimeMillis();
long time = (end - start)/1000;
System.out.println(time);//新增100000条数据,总耗时100秒
}
//使用mybatis框架中的foreach标签批量新增(一般在数据量大,需要考虑性能的情况下使用)
private void batchInsert2(List<User> userList) {
long start = System.currentTimeMillis();
userMapper.batchInsert2(userList);
long end = System.currentTimeMillis();
long time = (end - start)/1000;
System.out.println(time);//新增100000条数据,总耗时3秒
}
3.dao代码
//使用mybatis框架中的foreach标签批量新增(一般在数据量大,需要考虑性能的情况下使用)
void batchInsert2(List<User> userList);
4.XML代码
<!--使用mybatis框架中的foreach标签批量新增(一般在数据量大,需要考虑性能的情况下使用)-->
<insert id="batchInsert2" parameterType="java.util.List">
insert into user (id, account, pwd)
values
<foreach collection="userList" item="item" separator="," >
(#{item.id,jdbcType=VARCHAR}, #{item.account,jdbcType=VARCHAR}, #{item.pwd,jdbcType=VARCHAR})
</foreach>
</insert>
下一篇:
使用java批量更新数据呀
