mybatis in語句不能大于1000的問題及解決
Java開發(fā)中會(huì)出現(xiàn)一種情況,就是使用mybatis 的in語句的時(shí)候,in語句里面的數(shù)組大小不能大于1000.
通過以下方法解決
對于一個(gè)List<String> ids 大小大于1000的list而言
使用getSumArrayList方法,獲取List<List<String>> 對象
List<List<String>> idParams = shareEpdService.getSumArrayList(idParam);
Map<String, Object> mapNew = new HashMap<>();
mapNew.put("ids", idParams );
settlementCostMapper.submitDataByCondition(mapNew)調(diào)用mybatis的方法
做如下處理:
<update id="submitDataByCondition">
UPDATE 表名 SET STATE=1 WHERE STATE IN (-1,0) and
(
<foreach collection="ids" item="idsItem" separtor="or">
id in
<foreach collection="idsItem" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</foreach>
)
</update>
getSumArrayList方法
如下:
public <T> List<List<T>> getSumArrayList(List<T> list){
List<List<T>> objectlist = new ArrayList<>();
int iSize = list.size()/1000;
int iCount = list.size()%1000;
for(int i=0;i<=iSize;i++){
List<T> newObjList = new ArrayList<>();
if(i==iSize){
for(int j =i*1000;j<i*1000+iCount;j++ ){
newObjList.add(list.get(j));
}
}else{
for(int j =i*1000;j<(i+1)*1000;j++ ){
newObjList.add(list.get(j));
}
}
if(newObjList.size()>0){
objectlist.add(newObjList);
}
}
return objectlist;
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何解決MySQL安裝遇到Start service紅叉問題
在安裝MySQL時(shí),若遇到StartService步驟打紅叉無法繼續(xù),可通過計(jì)算機(jī)管理以管理員身份運(yùn)行服務(wù),找到MySQL服務(wù),更改為本地系統(tǒng)賬戶登錄,解決安裝問題,此方法為實(shí)際操作經(jīng)驗(yàn),可供參考,確保安裝順利完成2024-10-10
MySQL中參數(shù)sql_safe_updates在生產(chǎn)環(huán)境的使用詳解
這篇文章主要給大家介紹了關(guān)于MySQL中參數(shù)sql_safe_updates在生產(chǎn)環(huán)境使用的相關(guān)資料,并給大家分享了解決mysql sql_safe_updates不支持子查詢更新的方法,分享出來供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。2017-11-11
MySQL 億級數(shù)據(jù)導(dǎo)入導(dǎo)出及遷移筆記
上周被安排做了一個(gè)MySQL億級數(shù)據(jù)的遷移,特此記錄一下,導(dǎo)入和導(dǎo)出是兩個(gè)過程,本文想詳細(xì)的介紹一下具體的使用,感興趣的小伙伴們可以參考一下2021-06-06
Linux下如何實(shí)現(xiàn)Mysql定時(shí)任務(wù)
這篇文章主要介紹了Linux下如何實(shí)現(xiàn)Mysql定時(shí)任務(wù),需要的朋友可以參考下2018-04-04
實(shí)現(xiàn)mysql級聯(lián)復(fù)制的方法示例
這篇文章主要介紹了實(shí)現(xiàn)mysql級聯(lián)復(fù)制的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
在Qt中操作MySQL數(shù)據(jù)庫的實(shí)戰(zhàn)指南
QT連接Mysql數(shù)據(jù)庫的步驟相對繁瑣,但是也是一個(gè)不錯(cuò)的學(xué)習(xí)經(jīng)歷,下面這篇文章主要給大家介紹了關(guān)于在Qt中操作MySQL數(shù)據(jù)庫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
定時(shí)備份mysql, 定時(shí)切割nginx access log的方法
定時(shí)備份mysql, 定時(shí)切割nginx access log的方法,需要的朋友可以參考下。2011-09-09

