首页 > 其他 > 详细

Mybatis-IN语句包含大量值

时间:2021-05-20 22:44:08      阅读:25      评论:0      收藏:0      [点我收藏+]

方案1

<select id="xxx" resultType="java.lang.String">
    SELECT *
    FROM testTable t
    <where>
        1=1
        <!-- 加choose:防止外部传入空数据,获取了全量数据 -->
        <choose>
            <when test="ids!=null and ids.size()>0">
                AND (t.ID IN
                <foreach collection="ids" item="item" index="index" open="(" close=")" separator=",">
                    <!-- 在遍历的过程中,每N个数据需要添加一个IN,并采用or连接 -->
                    <if test="(index % 999) == 998"> NULL ) OR t.ID IN (</if>#{item}
                </foreach>)
            </when>
            <otherwise>
                AND t.ID IN(NULL)
            </otherwise>
        </choose>
    </where>
</select>

最后的语句可能是这样:where 1=1 and (id in(...) or id in(...))
是否需要加视情况而定。

Mybatis-IN语句包含大量值

原文:https://www.cnblogs.com/codetxj/p/14790609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!