在阅读了Mapper XMLs之后,我不禁想知道如何将一些常见的转换应用于参数。例如...
<select id="selectPerson" parameterType="String" resultType="hashmap">
<!-- #{name} should always be upper case and have a trailing % -->
SELECT * FROM PERSON WHERE FIRST_NAME like #{name}
</select>
- 使用诸如
upper
orconcat
或'||'
or之类的 SQL 函数'+'
进行转换会降低 DB2 的性能 - 我总是可以包装映射器或在服务层中公开细节,但这看起来很乱
我想要的是能够做类似的事情......
<select id="selectPerson" parameterType="String" resultType="hashmap">
<!-- #{name} should always be upper case and have a trailing % -->
SELECT * FROM PERSON WHERE FIRST_NAME like #{name.upperCase() + '%'}
</select>
这样的事情是否可能或第二好的解决方案是什么?
更新:似乎 MyBatis 使用 OGNL 进行一些表达式评估。例如,if
and${}
表达式使用 OGNL,但#{}
除非有某种方法可以欺骗它,否则它似乎不会。