После прочтения о 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>
После прочтения это и это я могу сделать некоторые наблюдения.
- Используя такие функции SQLкак
upper
или concat
, или '||'
, или '+'
, чтобы выполнить преобразование, убивающее производительность в 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
и ${}
используют OGNL, но #{}
НЕ появляется, если нет какого-либо способа его обмануть.