java skip_java8 stream方法的skip方法的使用

先说需求:从一个旧表将数据导入到新表中,然后删除旧表数据。

环境:jdk8,oracle数据库

导入的sql,insert into 新表 select* from 旧表,这里就不做过多说明了,这里不是重点。然后删除,delete from 旧表 where id in ('1','2')。

重点来了,由于旧表数据量太大了,in中最多只能支持1000个值,所以在删这里的时候就报错了。后来我就想到了stream,之前只用过map(),对集合的某一个列进行操作。后来就想到了可以可以用stream进行分页,结果真的查到了,skip()。

我是这样做的

int pageNum =0;

int pageSize =500;

if (list.size()%pageSize ==0) {

pageNum = pendOList.size()/pageSize;

}else {

pageNum = pendOList.size()/pageSize +1;

}

for (int i =0;i < pageNum;i++){

List pagelist = list.stream().skip(pageSize*i).

limit(pageSize).

collect(Collectors.toList());

//这里可以忽略

delete from 旧表 where id in (pagelist )。

}

这里就是记录一下自己的工作经历,希望大家喜欢。

你可能感兴趣的:(java,skip)