在 myBatis 映射器中首先解析哪些参数,# 或 $ ones?
What parameters are parsed the first in myBatis mapper, # or $ ones?
我在映射器中使用了一个标签,其中的文本包含一些外部#{}参数:
<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>
,首先解析什么参数? # 还是 $ 一个?
${}
(文本替换)首先解决。
如果 ${}
像你的例子一样在 <sql />
中,MyBatis 会在解析映射器文件时尝试替换它(即在应用程序启动期间)。
如果在这个阶段没有找到匹配的属性[1],MyBatis会在语句执行时通过查找运行时参数尝试替换它
[1] 除了嵌套在 <include />
中的 <property />
之外,您还可以在 configuration 中声明属性。
我在映射器中使用了一个标签,其中的文本包含一些外部#{}参数:
<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>
,首先解析什么参数? # 还是 $ 一个?
${}
(文本替换)首先解决。
如果 ${}
像你的例子一样在 <sql />
中,MyBatis 会在解析映射器文件时尝试替换它(即在应用程序启动期间)。
如果在这个阶段没有找到匹配的属性[1],MyBatis会在语句执行时通过查找运行时参数尝试替换它
[1] 除了嵌套在 <include />
中的 <property />
之外,您还可以在 configuration 中声明属性。