mybatis exists 中使用代替in关键字

 

 

使用场景,in适合数据量小的时候,exists适合数据量大的时候。

       <if test="torqueRecordPageDTO.vinList != null and torqueRecordPageDTO.vinList.size >0">
            and exists (
                select 1 from (
                <foreach collection="torqueRecordPageDTO.vinList" item="item" index="index" separator="union all">
                    select #{item} as vin
                    from dual
                </foreach>
                 ) a where a.vin = f.record_vin and a.product_id = t1.product_id
            )
        </if>
<!--        <if test="torqueRecordPageDTO.vinList != null and torqueRecordPageDTO.vinList.size >0">-->
<!--            AND F.record_vin in-->
<!--            <foreach collection="torqueRecordPageDTO.vinList" separator="," item="v" open="(" close=")">-->
<!--                #{v}-->
<!--            </foreach>-->
<!--        </if>-->

  

 

 <select id="getProductCapitalBookListByIds" resultMap="ProductCapitalBookResultMap">
        SELECT
        <include refid="ProductCapitalBook_Column_List"/>
        FROM
        product_capital_book t1
        WHERE 1 = 1
        <if test="booksRequestList!= null and booksRequestList.size() > 0">
            and exists (
                select 1 from (
                    <foreach collection="booksRequestList" item="item" index="index" separator="union all">
                        select #{item.bookId} as book_id,#{item.productId} as product_id
                        from dual
                    </foreach>
                ) a where a.book_id=t1.book_id and a.product_id = t1.product_id
            )
        </if>
    </select>

  

使用场景,in适合数据量小的时候,exists适合数据量大的时候。

原文地址:https://blog.csdn.net/weixin_43763459/article/details/121422693
posted @ 2024-09-12 23:02  红尘沙漏  阅读(9)  评论(0编辑  收藏  举报