0

jdbcType を Ibatis クエリに渡すパラメータに設定しようとしています。バックエンド テーブルには varchar として定義されたフィールドがあり、mybatis フレームワークは、mapper.java で渡した文字列パラメーターを nvarchar に変換しているようです。その結果、クエリ オプティマイザーは実行計画を検証するのに時間がかかっており、暗黙的な型キャストを行っているため、予期しない遅延が発生しています。問題を回避するための提案はありますか?

私がすでに試したことのサンプル: select * from myTable t where t.periodType=#{periodType, javaType="String", jdbcType = "varchar"}

これの問題は、クエリが非常に大きく、同じパラメーターを数回渡す多くのサブクエリで構成されていることです。同じ変数が出現するたびに jdbcType を定義するのは面倒です。

parameterMap が非推奨になったため、 parameterType を調べてみました。クラスを parameterType に渡しましたが、jdbcType を parameterType の変数に設定する方法が見つかりませんでした。

どんな助けでも大歓迎です

4

1 に答える 1

1

parameterType は機能しません。これは Java タイプであり、ほとんど必要ありません。私が考えることができる1つのオプションは、

select * from myTable t where t.periodType=<include refid="PARAM_PERIOD_TYPE"/>

ただし、これにより SQL が読み取れなくなります。唯一の利点は、変更が行われる場合、参照された PARAM_PERIOD_TYPE sql タグのみに変更を加える必要があることです。

于 2015-06-02T17:02:48.027 に答える