Размер коллекции в запросе mybatis - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть запрос 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>

Эта часть, на которой я застрял, получает размер коллекции, который будет динамичным. Так, как я могу получить размер коллекции, чтобы я мог правильно заполнить '???'значение?

1 Ответ

1 голос
/ 01 ноября 2019

Вы можете вызвать метод Collection#size(), используя выражение OGNL. т.е.

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

Обратите внимание, что #{userIdList.size} не будет работать здесь, потому что выражение в #{} анализируется внутренним анализатором выражений MyBatis, а не OGNL.

...