4

Mapper XMLについて読んだ後、いくつかの一般的な変換をパラメーターに適用するにはどうすればよいのか疑問に思わずにはいられません。例えば...

<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> 

これこれを読んだ後、私はいくつかの観察を行うことができます。

  1. upperorconcatまたは'||'orなどの SQL 関数を使用'+'して変換を行うと、DB2 のパフォーマンスが低下します。
  2. 私はいつでもマッパーをラップしたり、サービスレイヤーで詳細を公開したりできますが、それは面倒です

私が欲しいのは、次のようなことができるようになることです...

<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> 

このようなことは可能ですか、それとも 2 番目に良い解決策は何ですか?

更新: MyBatis は式の評価に OGNL を使用しているようです。たとえば、ifand${}式は OGNL を使用しますが、#{}それをだます方法がない限り、そうではないように見えます。

4

2 に答える 2

0

私も同じ問題を経験しました。しかし、これに対する解決策は見つかりませんでした。#{name}そのため、呼び出し元の関数からパラメーターを前処理する必要がありました。

于 2012-02-08T02:52:14.723 に答える