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