【问题标题】:Parametrized column for Ibatis Query works first time, fails on second callIbatis Query 的参数化列第一次工作,第二次调用失败
【发布时间】:2014-01-17 19:31:08
【问题描述】:

我遇到的问题与我在此处发现的问题相似(或完全相同): How to map query for iBATIS with parameterized column in select clause? 但是那里给出的答案似乎对我不起作用。
我有以下内容:

<typeAlias alias="resultado" type="java.lang.String"/>
<typeAlias alias="parametro" type="java.util.Map"/>

<select id="getValorVariable" resultClass="resultado" parameterClass="parametro">
    SELECT $campo$ FROM $tabla$
    WHERE $campoClave$ = #valorClave#
</select>

第一次执行选择时,它就可以工作。 $campo$ 的值为“CIF”。第二次运行时,它的值应该是“FECHA”,但它保持“CIF”。在调用 select 的函数中,我检查了地图及其值,并且它具有正确的值。

有什么想法吗?感谢您的帮助。

【问题讨论】:

    标签: sql ibatis


    【解决方案1】:

    您正面临这个问题,因为 iBatis 预编译了除参数值之外的整个查询。这些是在查询运行时动态添加的。因此,第一次运行查询时,它会使用 SELECT 语句中的列名进行预编译。

    添加

    remapResults="true"
    

    到您的&lt;select&gt; 标签。

    应该是这样的:

    <select id="getValorVariable" resultClass="resultado" parameterClass="parametro" remapResults="true">
    

    此外,在您的 &lt;sqlMapConfig&gt; 中将其添加到 &lt;settings&gt; 标记中:

    statementCachingEnabled="false"
    

    【讨论】:

    • 哎呀.. 刚刚看到这是从 1 月 17 日开始的!
    • 我有(现在有!!)同样的问题。非常感谢您的回答!!!!
    猜你喜欢
    • 1970-01-01
    • 2020-09-13
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    相关资源
    最近更新 更多