método mapper parámetro múltiple iBatis
Pregunta
Vamos a decir que tengo una getUser
consulta con dos parámetros - usuario y contraseña. Me gustaría tener un método asignador con este aspecto:
public UserBean getUser(String userName, String password);
¿Hay alguna manera de lograr algo por el estilo? O quizás debería pasar en mi asignador mapa método de parámetros (y algunos parameterMap en mi asignador XML)?
public UserBean getUser(Map<String, Object> paramMap);
Estoy deseando para algunos consejos y explicaciones.
Solución
Sin ninguna configuración especial, que puede referirse a la primera y segunda parámetro como # {1} y # {2}, respectivamente.
Si desea nombrar a los parámetros, en lugar de referirse a ellos numéricamente, haga lo siguiente: En la asignación XML para su instrucción SELECT, establecer parameterType = "mapa", y en el archivo de interfaz, anotar los parámetros con @ Param. Por ejemplo, pública UserBean getUser (@Param ( "nombre_usuario" cadena usuario, @Param ( "contraseña") String password); permitiría hacer referencia al nombre de usuario y contraseña, en el mapeo XML, como # {#} y nombre_usuario # {password}, ??respectivamente.
Otros consejos
No debe modificar la firma de su método DAO, la única cuestión a considerar es la forma de construir su asignación. apoyo iBatis sólo un parámetro de entrada, y debe decidir su clase (atributo parameterType
) para empacar sus dos parámetros originales en uno.
En este escenario es posible (entre otras opciones) colocar los dos parámetros en un Map
(HashMap
, por lo general), o (si los parámetros corresponden a propiedades de la clase UserBean
) pasar una UserBean
maniquí con esas dos propiedades establecidas.
En ambos casos el embalaje (la construcción de la HashMap o la UserBean ficticia que mantienen los dos parámetros) se llevaría a cabo dentro de su método public UserBean getUser(String userName, String password)
.