Передача параметров MyBatis

Я хочу использовать общий шаблон запроса для фильтрации в myBatis-3. Мой шаблон выглядит примерно так:

<sql id="filter">
    SELECT * FROM (${subquery}) LIMIT ${page}, 20
</sql>

Заполнитель подзапроса может принять любой запрос. Я попытался передать подзапрос в качестве параметра. Но, к сожалению, это не работает, подзапрос пуст. Интересно, возможно ли значение свойства принимать динамическое значение?

<select
    id="find"
    parameterType="some.page"
    resultMap="map">
    <include refid="some.namespace.filter">
        <property name="subquery" value="${subquery}"/>
        <property name="page" value="#{page}"/>
    </include>
</select>

<sql id="subquery">
    SELECT * FROM test_table ORDER BY id
</sql>

1 ответ

Почему бы тебе просто не изменить другой способ сделать это? Я не думаю, что функция, которую вы сказали, поддерживается MyBatis, может быть, вы можете сделать это следующим образом;

<select
    id="find"
    parameterType="some.page"
    resultMap="map">
    SELECT * FROM (<include refid="subquery">) t LIMIT ${page}, 20
</select>

<sql id="subquery">
    SELECT * FROM test_table ORDER BY id
</sql>
Другие вопросы по тегам