0

我正在尝试将 jdbcType 设置为我传递给 Ibatis 查询的参数。我的后端表具有定义为 varchar 的字段,而 mybatis 框架似乎正在将我在 mapper.java 中传递的字符串参数转换为 nvarchar。结果,查询优化器需要时间来验证执行计划,执行隐式类型转换,因此会出现一些意外延迟。关于解决问题的任何建议?

我已经尝试过的示例: select * from myTable t where t.periodType=#{periodType, javaType="String", jdbcType = "varchar"}

这样做的问题是,我们的查询非常大,它包含许多子查询,我们在其中多次传递相同的参数。在每次出现时为同一个变量定义 jdbcType 变得越来越麻烦。

由于不推荐使用 parameterMap,我尝试探索 parameterType。我将一个类传递给 parameterType,但找不到将 jdbcType 设置为 parameterType 中的变量的方法。

任何帮助表示赞赏

4

1 回答 1

1

parameterType 对您不起作用 - 这是 java 类型,很少需要。我能想到的一种选择是使用

select * from myTable t where t.periodType=<include refid="PARAM_PERIOD_TYPE"/>

但是,这会使 SQL 不可读。唯一的优点是如果要进行更改,它们只需要在引用的 PARAM_PERIOD_TYPE sql 标记中。

于 2015-06-02T17:02:48.027 回答