假设我有一个getUser
带有两个参数的查询 - 用户名和密码。我想要一个像这样的映射器方法:
public UserBean getUser(String userName, String password);
有什么办法可以实现这样的目标吗?或者也许我应该传入我的参数映射器方法映射(以及我的 xml 映射器中的一些参数映射)?
public UserBean getUser(Map<String, Object> paramMap);
我期待着一些提示和解释。
无需任何特殊配置,您可以将第一个和第二个参数分别称为#{1}和#{2}。
如果您想命名参数,而不是用数字引用它们,请执行以下操作: 在 SELECT 语句的 XML 映射中,设置 parameterType="map",并在接口文件中,使用 @Param 注释参数。例如, public UserBean getUser( @Param( "user_name" String userName, @Param( "password" ) String password); 将允许您在 XML 映射中将用户名和密码引用为 #{user_name#} 和#{密码},分别。
您不应该更改 DAO 方法的签名,唯一要考虑的问题是如何构建映射。iBatis 只支持一个输入参数,你必须决定你的类(属性parameterType
)将你的两个原始参数打包在一起。
在这种情况下,您可以(在其他选项中)将两个参数放在Map
(HashMap
通常) 中,或者(如果参数对应于UserBean
类的属性)传递一个UserBean
带有这两个属性集的虚拟对象。
在这两种情况下,打包(构建 HashMap 或包含两个参数的虚拟 UserBean)都将在您的 public UserBean getUser(String userName, String password)
方法中完成。