6

假设我有一个getUser带有两个参数的查询 - 用户名和密码。我想要一个像这样的映射器方法:

public UserBean getUser(String userName, String password);

有什么办法可以实现这样的目标吗?或者也许我应该传入我的参数映射器方法映射(以及我的 xml 映射器中的一些参数映射)?

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

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

4

2 回答 2

9

无需任何特殊配置,您可以将第一个和第二个参数分别称为#{1}和#{2}。

如果您想命名参数,而不是用数字引用它们,请执行以下操作: 在 SELECT 语句的 XML 映射中,设置 parameterType="map",并在接口文件中,使用 @Param 注释参数。例如, public UserBean getUser( @Param( "user_name" String userName, @Param( "password" ) String password); 将允许您在 XML 映射中将用户名和密码引用为 #{user_name#} 和#{密码},分别。

于 2010-06-21T06:06:05.220 回答
1

您不应该更改 DAO 方法的签名,唯一要考虑的问题是如何构建映射。iBatis 只支持一个输入参数,你必须决定你的类(属性parameterType)将你的两个原始参数打包在一起。

在这种情况下,您可以(在其他选项中)将两个参数放在Map(HashMap通常) 中,或者(如果参数对应于UserBean类的属性)传递一个UserBean带有这两个属性集的虚拟对象。

在这两种情况下,打包(构建 HashMap 或包含两个参数的虚拟 UserBean)都将在您的 public UserBean getUser(String userName, String password)方法中完成。

于 2010-05-31T14:04:50.687 回答