java - iBatis 语句外部化
问题描述
我有 iBatis xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap>
<resultMap id="dataResult" class="...skipped...">
...skipped...
</resultMap>
<procedure id="dataPull" resultMap="dataResult" >
{call RealtimeDataPull ()}
</procedure>
<update id="updateTrades" parameterClass="...skipped...">
UPDATE ...skipped... where ...skipped...
</update>
</sqlMap>
这里需要外化DB存储过程名称RealtimeDataPull
和UPDATE
SQL语句。我会将它们放入常规的 java 属性文件中。
如何在 iBatis xml 配置中正确执行此操作?
我试图定义这样的参数
<procedure id="dataPull" resultMap="dataResult" >
${sql.dataPullCall}
</procedure>
<update id="updateTrades" parameterClass="...skipped...">
${sql.updateTradesStatement}
</update>
并将参数放入属性文件
sql.dataPullCall={call RealtimeDataPull ()}
sql.updateTradesStatement=UPDATE ...skipped... where ...skipped...
但${...}
由于某种原因,这种方法不起作用。
解决方案
我的问题的解决方案是使用 iBatis 自定义属性文件,包括并且不使用标准 Spring 方法
<sqlMapConfig>
<properties resource="sql.properties" />
<sqlMap resource="dbMapping.xml"/>
</sqlMapConfig>
推荐阅读
- javascript - 我希望在用户单击按钮时出现警报,但它们会提前出现
- reactjs - 如何以及在何处发出取决于另一个请求的响应的 API 请求?
- react-redux - Redux Toolkit - 如何在切片之间共享操作
- c++ - 仅使用节点的值在二叉树中查找节点的祖先
- c# - C# + DirectX 12 + Visual Studio 图形诊断的 Hello World:如何在着色器代码中的断点处停止
- sql - 访问查询 - 在查询设计 GUI 中,如果为 null,我如何设置总和以返回零?
- python - 为什么这个 python3 计算器中没有定义选项?
- angular - 在材质中制作一个多行复选框(角度)
- c# - 在加载 C# 时更改按钮的颜色
- excel - 如何处理附件。通过 Excel 准备电子邮件时添加错误