最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis in查詢條件過長的解決方案

 更新時間:2021年10月09日 17:01:24   作者:遙遙晚風(fēng)點(diǎn)點(diǎn)  
這篇文章主要介紹了mybatis in查詢條件過長的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mybatis in查詢條件過長的解決

方法1:分次查詢,將參數(shù)且分割成多個短的查詢后合并

代碼:

      int splitNum =(int) Math.ceil( (float) ids.length/999); //切片數(shù)量
      List<String> itemIdList = new ArrayList<>(Arrays.asList(ids));
      List<List<String>> splitList = averageAssign(itemIdList, splitNum);
      for (List<String> list : splitList) {
       param.put("itemIds",list);
       List<Map<Object, Object>> itemStatisticsList = iProcessExtMapper.getItemStatisticsList(param);
       result.addAll(itemStatisticsList);
      }

將list分成N等分方法方法:

 public static <T> List<List<T>> averageAssign(List<T> source,int n){
  List<List<T>> result=new ArrayList<List<T>>();
  int remaider=source.size()%n;  //(先計(jì)算出余數(shù))
  int number=source.size()/n;  //然后是商
  int offset=0;//偏移量
  for(int i=0;i<n;i++){
   List<T> value=null;
   if(remaider>0){
    value=source.subList(i*number+offset, (i+1)*number+offset+1);
    remaider--;
    offset++;
   }else{
    value=source.subList(i*number+offset, (i+1)*number+offset);
   }
   result.add(value);
  }
  return result;
 }

方法2:xml文件中編寫sql

i.id in     
 <foreach collection="itemIds" index="index" item="item" open="(" close=")">
 <if test="index != 0">
   <choose>
   <when test="index % 1000 == 999"> ) OR ID IN( </when>
                 <otherwise>,</otherwise>
   </choose>
 </if>
   #{item}
 </foreach> 

sql邏輯:

ID IN(ids[0],ids[1]+...+ids[998])OR ID IN (ids[999],ids[1000],...ids[max])

mybatis大于1000的in查詢的解決

之前公司一位同事寫的方法:

<select id="getByDirIds" parameterType="string" resultMap="dirDocLinkMap">
        SELECT
        <include refid="columns"/>
        FROM KM_DIR_DOC_LINK T
        WHERE T.DIR_ID IN
        <foreach collection="array" index="index" open="(" close=")" item="item" separator=",">
            <if test="(index % 1000) == 999">NULL) OR T.DIR_ID IN (</if>#{item}
        </foreach>
    </select>

但是隨著數(shù)據(jù)量增加,發(fā)現(xiàn)大于2000這種方法會報(bào)錯;

論證如下

這里寫圖片描述

解決辦法

<foreach collection="array" item="item" index="index" open="(" close=")" separator=",">
                <if test="(index % 999) == 998"> NULL ) OR DOC.ID IN (</if>#{item}
            </foreach>

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼

    springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼

    本文主要介紹了springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • springboot+jersey+tomcat實(shí)現(xiàn)跨域方式上傳文件到服務(wù)器的方式

    springboot+jersey+tomcat實(shí)現(xiàn)跨域方式上傳文件到服務(wù)器的方式

    這篇文章主要介紹了springboot+jersey+tomcat實(shí)現(xiàn)跨域方式上傳文件到服務(wù)器,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java中多態(tài)性的實(shí)現(xiàn)方式

    Java中多態(tài)性的實(shí)現(xiàn)方式

    這篇文章主要介紹了Java中多態(tài)性的實(shí)現(xiàn)方式,什么是多態(tài)?通過簡單的一道題目幫大家理解java多態(tài)性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Spring boot整合shiro+jwt實(shí)現(xiàn)前后端分離

    Spring boot整合shiro+jwt實(shí)現(xiàn)前后端分離

    這篇文章主要為大家詳細(xì)介紹了Spring boot整合shiro+jwt實(shí)現(xiàn)前后端分離,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • SpringBoot如何使用自定義注解實(shí)現(xiàn)接口限流

    SpringBoot如何使用自定義注解實(shí)現(xiàn)接口限流

    這篇文章主要介紹了SpringBoot如何使用自定義注解實(shí)現(xiàn)接口限流,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • RabbitMQ的消息確認(rèn)機(jī)制的詳細(xì)總結(jié)

    RabbitMQ的消息確認(rèn)機(jī)制的詳細(xì)總結(jié)

    RabbitMQ消息確認(rèn)機(jī)制指的是在消息傳遞過程中,發(fā)送方發(fā)送消息后,接收方需要對消息進(jìn)行確認(rèn),以確保消息被正確地接收和處理,本文就講給大家詳解介紹RabbitMQ的幾種消息確認(rèn)機(jī)制,需要的朋友可以參考下
    2023-07-07
  • 基于Java實(shí)現(xiàn)音樂播放器的示例代碼

    基于Java實(shí)現(xiàn)音樂播放器的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java編寫一個簡單的音樂播放器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-07-07
  • 深入C++ typedef的用法總結(jié)(必看)

    深入C++ typedef的用法總結(jié)(必看)

    本篇文章是對C++中typedef的用法進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下
    2013-05-05
  • 解析Spring?漏洞及其修復(fù)方案

    解析Spring?漏洞及其修復(fù)方案

    官宣了最近網(wǎng)傳的Spring漏洞。攻擊者利用該漏洞,可在未授權(quán)的情況下遠(yuǎn)程執(zhí)行命令,今天通過本文給大家普及下漏洞分析影響范圍及解決方案,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • 解析JAVA中 maven pom.xml 和 properties 配置文件、spring 配置文件及環(huán)境變量的關(guān)系

    解析JAVA中 maven pom.xml 和 properties 

    這篇文章主要介紹了JAVA中 maven pom.xml 和 properties 配置文件、spring 配置文件及環(huán)境變量的關(guān)系,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-05-05

最新評論

聂荣县| 桃江县| 安吉县| 天水市| 遵义市| 读书| 扶绥县| 佛学| 张北县| 天峻县| 靖州| 涪陵区| 天峨县| 来安县| 井陉县| 南开区| 西畴县| 遂平县| 郑州市| 平凉市| 旬阳县| 桦川县| 苏尼特左旗| 德江县| 天峨县| 新平| 巴彦淖尔市| 依兰县| 永兴县| 乐都县| 青铜峡市| 武定县| 河南省| 溧水县| 沂水县| 广州市| 巴林左旗| 皋兰县| 同心县| 开原市| 融水|