Какие параметры анализируются первыми в myBatis mapper, # или $? - PullRequest
0 голосов
/ 06 февраля 2020

Я использую тег в маппере, и текст в нем содержит некоторые внешние # {} параметры:

<sql id="searchInInterval">
    (r01.start between to_date(#{${what}Date}, 'MMYYYY') and to_date(#{thirdDate}, 'MMYYYY'))

Позже в мапере XML, когда я использую его

<include refid="searchInInterval">
    <property name="what" value="first"/>
</include>

, какой параметр будет анализироваться первым? # или $ один?

1 Ответ

1 голос
/ 07 февраля 2020

${} (подстановка текста) разрешается первым.

В случае, если ${} находится внутри <sql />, как ваш пример, MyBatis пытается заменить его при синтаксическом анализе файла сопоставления (т. Е. Во время запуска приложения).
Если не найдено подходящих свойств [1 ] на этом этапе MyBatis пытается заменить его, просматривая параметры времени выполнения при выполнении инструкции.

[1] В дополнение к <property />, вложенному в <include />, вы можете объявить свойства в конфигурация .

...