2010-05-26 52 views
6

比方說,我有一個查詢getUser與兩個參數 - 用戶名和密碼。我想有一個像這樣的映射器方法:iBatis多參數映射器方法

public UserBean getUser(String userName, String password); 

有沒有什麼辦法可以實現這樣的事情?或者,也許我應該通過我的映射器方法地圖的參數(和一些parameterMap在我的XML映射器)?

public UserBean getUser(Map<String, Object> paramMap); 

我期待着一些提示和解釋。

回答

9

沒有任何特殊配置,可以分別參考第一個和第二個參數,分別爲#{1}和#{2}。

如果您想要命名這些參數,而不是通過數字引用它們,請執行以下操作:在SELECT語句的XML映射中,設置parameterType =「map」,並在接口文件中爲參數添加註釋@Param。例如,public UserBean getUser(@Param(「user_name」String userName,@Param(「password」)String password);將允許您在XML映射中將用戶名和密碼引用爲#{user_name#}和#{密碼},分別爲

+0

bingo!這就是我一直在尋找:)非常感謝:)完美的作品:) – jjczopek 2010-06-22 14:39:25

1

您不應該更改DAO方法的簽名,唯一需要考慮的問題是如何構建映射。 iBatis僅支持一個輸入參數,並且您必須決定您的類(屬性parameterType)將兩個原始參數打包爲一個。

在這種情況下,你可能(在其他選項中)將兩個參數在MapHashMap,通常情況下),或者(如果該參數對應於UserBean類的屬性)通過一個虛擬UserBean設置這兩個屬性。

在這兩種情況下,在你的public UserBean getUser(String userName, String password)方法中都會完成打包(建立HashMap或包含兩個參數的僞UserBean)。

+0

感謝您的回覆。我不必更改我的DAO方法 - 我想知道的(一般情況下)iBatis是否支持映射器接口方法中的多個參數:) – jjczopek 2010-06-07 15:22:41