1. 程式人生 > >Java arrayDeque分割List實現大批量匯入功能

Java arrayDeque分割List實現大批量匯入功能

今天做的匯入功能出現了個bug,超過了2100條的資料做批量匯入的時候,資料庫會報錯(小弟用的是sql server2012版本)。
tomcat報錯提示
這一塊的問題在於sql server 2012不能支援超過2100個引數的語句,而我這裡的做法是使用Mybatis的語句,一次把多個進行update。所以才會導致了這個錯誤。
於是,考慮到的解決方法就是切割這一個List,剛剛是打算分割成多個List來進行操作的,後續發現好麻煩!於是,在同事的提醒下使用了Java的雙向佇列ArrayDeque。

這個大哥提供了一篇介紹的博文,大家可以去了解一下!

Java裡呼叫這個ArrayDeque的方式很簡單,本身這個queue就自帶建構函式把list轉成queue.
`Collection<String> orderScrenAdvertisementLongExcels;
Queue<String> queue = new ArrayDeque(orderScrenAdvertisementLongExcels);

然後對應的再進行分割便可,程式碼如下:

int updatedRows = 0;
            int maxSize = 688;
            if (orderScrenAdvertisementLongExcels.size()>maxSize){
                Queue<String> queue = new ArrayDeque(orderScrenAdvertisementLongExcels);
                while (queue.size()>maxSize){
                    Queue
<String> queueTmp = new ArrayDeque(maxSize); for (int i= 0;i < maxSize;i++){ String tmp = queue.poll();//移除並返回佇列頭部的元素 如果佇列為空,則返回null queueTmp.offer(tmp); } updatedRows+=advertisementExcelMapper.
updateProcessManagerOrderScreen(queueTmp, orderId, seq); } updatedRows+= advertisementExcelMapper.updateProcessManagerOrderScreen(queue, orderId, seq); }