mybatis查询集合大小

Dav*_*idR 1 mybatis

我有一个 MyBatis 查询,如下所示:

<if test="userIdList != null and userIdList > 0">
            AND galleries.id IN (
                SELECT gallery_id
                    FROM gallery_users
                    WHERE gallery_id IN (
                        <foreach collection="userIdList" item="item" separator="," open="(" close=")">
                            #{item}
                        </foreach>
                    )
                    GROUP BY gallery_id HAVING COUNT(gallery_id) = ???                 
            )
        </if>
Run Code Online (Sandbox Code Playgroud)

我所坚持的部分是获取动态的集合大小。那么我怎样才能获得集合大小,以便我可以正确填写“???” 价值?

ave*_*ave 6

您可以Collection#size()使用 OGNL 表达式调用该方法。IE

GROUP BY gallery_id HAVING COUNT(gallery_id) = ${userIdList.size}
Run Code Online (Sandbox Code Playgroud)

请注意,这#{userIdList.size}在这里不起作用,因为 in 中的表达式#{}是由 MyBatis 的内部表达式解析器解析的,而不是由 OGNL 解析的。