我正在努力将jdbcType设置为我传递给我的Ibatis查询的参数。我的后端表有定义为varchar的字段,而mybatis框架似乎正在转换我传递的字符串参数 在我的mapper.java中为nvarchar。查询优化器花费时间来验证执行计划,执行隐式类型转换,从而产生一些意外延迟。有关解决问题的任何建议吗?
我已经尝试过的样本: select * from myTable t其中t.periodType =#{periodType,javaType =“String”,jdbcType =“varchar”}
问题是,我们的查询非常大,它包含很多子查询,我们几次传递相同的参数。在每次出现时为同一个变量定义jdbcType变得很麻烦。
由于不推荐使用parameterMap,我尝试探索parameterType。我将一个类传递给parameterType但是找不到将jdbcType设置为parameterType中的变量的方法。
感谢任何帮助
答案 0 :(得分:1)
parameterType对你不起作用 - 这是java类型,很少需要。 我能想到的一个选择是使用
select * from myTable t where t.periodType=<include refid="PARAM_PERIOD_TYPE"/>
然而,这将使SQL不可读。唯一的好处是,如果要进行更改,则只需要在引用的PARAM_PERIOD_TYPE sql标记中。