iBatis语句外部化

时间:2018-07-05 15:45:46

标签: java xml 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>

在这里,我需要外部化数据库存储过程名称RealtimeDataPullUPDATE 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...

但是这种${...}方法由于某些原因无法正常工作。

1 个答案:

答案 0 :(得分:0)

我的问题的解决方案是使用包括但不使用标准Spring方法的iBatis自定义属性文件

<sqlMapConfig>
    <properties resource="sql.properties" />
    <sqlMap resource="dbMapping.xml"/>
</sqlMapConfig>