<select id="getByIds" parameterType="java.util.List" resultMap="CMap"
        resultType="Chg">
    SELECT * 
    FROM TB_CHG
    where (ID IN
    <trim suffixOverrides=" OR ID IN()">
        <foreach collection="list" item="Id" index="index" open="(" close=")">
            <if test="index != 0">
                <choose>
                    <when test="index % 1000 == 999">) OR ID IN(</when>
                    <otherwise>,</otherwise>
                </choose>
            </if>
            #{odId}
        </foreach>
    </trim>)
</select>

标签使用解释:

1.<trim>标签suffixOverrides:删除后缀匹配的内容,以上例子中后缀如果是 "OR ID IN()"与suffixOverrides的属性值匹配,则去掉 "OR ID IN()"

2.index 集合迭代的位置从0开始,<if test="index != 0">为了解决IN里面的多出的','问题

标签的解释:

collection 循环的集合对象
item 集合中每一个元素或者该集合的对象
index 下标,从0开始 
open 开始符号
separator 每次进行迭代分隔符 
close 结束符号

prefix  添加前缀
prefixOverrides  删除前缀
suffix  添加后缀
suffixOverrides  删除后缀

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐