sql - myBatis 映射器中首先解析哪些参数,# 或 $ 的?
问题描述
我在映射器中使用了一个标签,其中的文本包含一些外部 #{} 参数:
<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] 除了<property />
嵌套 inside ,您还可以在配置<include />
中声明属性。
推荐阅读
- java - 如何将数据放入作者内部的工作范围地图?
- ms-access - 在与请求的名称或序号相对应的集合中找不到项目
- c# - C# 在 08:20:00 和 08:29:59 之间生成 5 个随机时间
- c++ - C++ 在不使用 pow 或循环的情况下计算数字的幂
- python - 如何在不刷新页面的情况下正确显示存储在外部模型中的数据?
- node.js - Node.js 多人游戏多线程和多核
- .net - 是否可以将在内存中创建的 DataTable 写入数据库表
- python-3.x - 无法使用 boto3 创建 ResourceGroup:查询格式无效
- qradar - 如何通过 REST api 使用基于 IBM Qradar Offenses 规则的过滤器?
- sql - 使用 CASE 强制 color_code 输出为不同的字符串