背景
老项目,用的原生的JDBC,获取连接,预编译...然后业务需要要更新很多条数据,我就写了条件为 ——IN()...
根据传入的 list 的 size 循环的给sql语句拼接上“ ? ”为了之后的预编译
然后~ 报错了!! 说参数组装超过 2000 个,呜呜呜~
发展
这个时候,考虑要不要放弃多条拼接,一条一条的去更新,然而觉得那样访问数据库的次数,太多了!
所以,既然不能超过 2000 个参数,那我截成几个小的 list 去更新不就好了?——好主意
解决
上方法
1 private List<List<String>> createList(List<String> targe){ 2 List<List<String>> listArr = new ArrayList<List<String>>(); 3 int size = 1500; 4 //获取被拆分的数组个数 5 int arrSize = targe.size()%size==0?targe.size()/size:targe.size()/size+1; 6 for(int i=0;i<arrSize;i++) { 7 List<String> sub = new ArrayList<String>(); 8 //把指定索引数据放入到list中 9 for(int j=i*size;j<=size*(i+1)-1;j++) { 10 if(j<=targe.size()-1) { 11 sub.add(targe.get(j)); 12 } 13 } 14 listArr.add(sub); 15 } 16 return listArr; 17 }
OK,喜大普奔~