Db2 如何对MyBatis中的参数应用方法

Db2 如何对MyBatis中的参数应用方法,db2,mybatis,ognl,Db2,Mybatis,Ognl,在阅读了有关的内容后,我不禁想知道如何将一些常见的转换应用于参数。例如 <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} </sel

在阅读了有关的内容后,我不禁想知道如何将一些常见的转换应用于参数。例如

<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> 
这样做可能吗?或者第二个最好的解决方案是什么


更新:MyBatis似乎使用OGNL进行一些表达式计算。例如,if和${}表达式使用OGNL,但{}似乎不使用OGNL,除非有某种方法来欺骗它。

我也遇到了同样的问题。但我没有找到任何解决办法。因此,我必须从调用函数中预处理{name}参数。

Bind MyBatis允许使用从上下文中的方法和属性创建值

Bind在当前语句的范围内创建一个新变量。绑定该值的OGNL语句可以使用传入的_参数对象来计算一个新的绑定值,然后MyBatis可以使用该值来构造准备好的语句

实例 您使用bind的示例:

<select id="selectPerson" parameterType="String" resultType="hashmap">
  <!-- #{name} should always be upper case and have a trailing % -->
  <bind name="nameStartsWith" value="_parameter.getName().upperCase() + '%'"/>
  SELECT * FROM PERSON WHERE FIRST_NAME like #{nameStartsWith} 
</select>
来源
bind似乎只有在mybatis版本3.2I这样工作之后才可用:…在{pattern}之类的东西中,为了安全起见,参数不是由用户提供的。
<select id="selectPerson" parameterType="String" resultType="hashmap">
  <!-- #{name} should always be upper case and have a trailing % -->
  <bind name="nameStartsWith" value="_parameter.getName().upperCase() + '%'"/>
  SELECT * FROM PERSON WHERE FIRST_NAME like #{nameStartsWith} 
</select>