質問
クエリがあるとしましょう getUser
ユーザー名とパスワードの2つのパラメーターを使用。このように見えるマッパー方法を持ちたいです:
public UserBean getUser(String userName, String password);
そのようなことを達成できる方法はありますか?それとも、パラメーターのマッパーメソッドマップ(およびXMLマッパーのパラメーターマップ)を渡す必要があるのでしょうか?
public UserBean getUser(Map<String, Object> paramMap);
いくつかのヒントと説明を楽しみにしています。
解決
特別な構成がなければ、最初と2番目のパラメーターをそれぞれ#{1}と#{2}と呼ぶことができます。
数値的に参照するのではなく、パラメーターに名前を付けたい場合は、次のことを実行します。選択ステートメントのXMLマッピングで、parametertype = "map"を設定し、インターフェイスファイルで@paramでパラメーターを注釈付けします。たとえば、public userbean getuser(@param( "user_name" string username、@param( "password")string password); #{パスワード}、それぞれ。
他のヒント
DAOメソッドの署名を変更しないでください。考慮すべき唯一の問題は、マッピングの構築方法です。 Ibatisは1つの入力パラメーターのみをサポートし、クラスを決定する必要があります(属性 parameterType
)2つの元のパラメーターを1つにパックします。
このシナリオでは、(他のオプションの中でも)2つのパラメーターをに配置する場合があります。 Map
(HashMap
, 、通常)、または(パラメーターがのプロパティに対応する場合 UserBean
クラス)ダミーを渡します UserBean
これらの2つのプロパティが設定されています。
どちらの場合も、梱包(ハッシュマップの構築または2つのパラメーターを保持するダミーユーザービーンの構築)が内部で行われます public UserBean getUser(String userName, String password)
方法。