mybatis in語(yǔ)句不能大于1000的問(wèn)題及解決
Java開(kāi)發(fā)中會(huì)出現(xiàn)一種情況,就是使用mybatis 的in語(yǔ)句的時(shí)候,in語(yǔ)句里面的數(shù)組大小不能大于1000.
通過(guò)以下方法解決
對(duì)于一個(gè)List<String> ids 大小大于1000的list而言
使用getSumArrayList方法,獲取List<List<String>> 對(duì)象
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紅叉問(wèn)題
在安裝MySQL時(shí),若遇到StartService步驟打紅叉無(wú)法繼續(xù),可通過(guò)計(jì)算機(jī)管理以管理員身份運(yùn)行服務(wù),找到MySQL服務(wù),更改為本地系統(tǒng)賬戶登錄,解決安裝問(wèn)題,此方法為實(shí)際操作經(jīng)驗(yàn),可供參考,確保安裝順利完成2024-10-10MySQL中參數(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不支持子查詢更新的方法,分享出來(lái)供大家參考學(xué)習(xí),需要的朋友們下面來(lái)一起看看吧。2017-11-11MySQL 億級(jí)數(shù)據(jù)導(dǎo)入導(dǎo)出及遷移筆記
上周被安排做了一個(gè)MySQL億級(jí)數(shù)據(jù)的遷移,特此記錄一下,導(dǎo)入和導(dǎo)出是兩個(gè)過(guò)程,本文想詳細(xì)的介紹一下具體的使用,感興趣的小伙伴們可以參考一下2021-06-06Linux下如何實(shí)現(xiàn)Mysql定時(shí)任務(wù)
這篇文章主要介紹了Linux下如何實(shí)現(xiàn)Mysql定時(shí)任務(wù),需要的朋友可以參考下2018-04-04實(shí)現(xiàn)mysql級(jí)聯(lián)復(fù)制的方法示例
這篇文章主要介紹了實(shí)現(xiàn)mysql級(jí)聯(lián)復(fù)制的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05在Qt中操作MySQL數(shù)據(jù)庫(kù)的實(shí)戰(zhàn)指南
QT連接Mysql數(shù)據(jù)庫(kù)的步驟相對(duì)繁瑣,但是也是一個(gè)不錯(cuò)的學(xué)習(xí)經(jīng)歷,下面這篇文章主要給大家介紹了關(guān)于在Qt中操作MySQL數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04定時(shí)備份mysql, 定時(shí)切割nginx access log的方法
定時(shí)備份mysql, 定時(shí)切割nginx access log的方法,需要的朋友可以參考下。2011-09-09