mybatis 查询中的集合大小

Collection size in mybatis query

我有一个 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>

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

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

GROUP BY gallery_id HAVING COUNT(gallery_id) = ${userIdList.size}

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