SQL 用 in 大於 1000 問題解決


-- 今天生成環境數據突然多,系統異常 解決方案(必須用in 業務情況),也可以用其他函數解決 union all  或者 exists 等

1:截取list

 List<Integer>  intList1apache=new ArrayLiat();

  1. List<List<Integer>> subs1apache = ListUtils.partition(intList1apache, 999);

2 :將List<String> 划分為List<List<String>>

按指定大小,分隔集合,將集合按規定個數分為n個部分

private static List<List<String>> splitList(List<String> list, int len) {
if (list == null || list.size() == 0 || len < 1) {
return null;
}
List<List<String>> result = new ArrayList<List<String>>();
int size = list.size();
int count = (size + len - 1) / len;
for (int i = 0; i < count; i++) {
List<String> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1)));
result.add(subList);
}
return result;
}



3.

改為: 入參為List<List<String>>

WHERE name IS NOT NULL
<if test="userids!=null and userids.size()>0" >
and
<foreach collection="userids" item="userid" open="(" separator="or" close=")">
createby in
<foreach collection="userid" item="createby" open="(" separator="," close=")">
#{createby}
</foreach>
</foreach>
</if>

效果 where xxx and (createby in (1,2,3,4,5 .... ,999) or createby in(1000,1001,....,1040))

4. 怎么2秒內 批量插入 5000 條數據

集合分割函數

  1. List<List<Integer>> subs1apache ListUtils.partition(intList1apache, 999);
    2.  List<List<Integer>> subs1apache = Lists.partition(intList1apache, 999);
     
     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM