2010-05-26 16 views
6

Digamos que tengo una consulta getUser con dos parámetros: nombre de usuario y contraseña. Me gustaría tener un método de asignación parecido a este:iBatis método de mapeo de parámetros múltiples

public UserBean getUser(String userName, String password); 

¿Hay alguna manera de lograr algo así? O tal vez debería pasar el mapa de parámetros de mi mapador (y algún parámetroMap en mi mapeador xml)?

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

Espero algunas pistas y explicaciones.

Respuesta

9

Sin ninguna configuración especial, puede consultar el primer y el segundo parámetro como # {1} y # {2}, respectivamente.

Si desea nombrar los parámetros, en lugar de referirse a ellos numéricamente, haga lo siguiente: En la asignación XML para su instrucción SELECT, establezca parameterType = "map", y en el archivo de interfaz, anote los parámetros con @Param. Por ejemplo, UserBean getUser público (@Param ("nombre_de_usuario" String userName, @Param ("contraseña") String password); le permitiría hacer referencia al nombre de usuario y contraseña, en la asignación XML, como # {user_name #} y # {contraseña}, respectivamente.

+0

¡bingo! Eso es lo que he estado buscando :) muchas gracias :) Funciona perfectamente :) – jjczopek

1

No debe cambiar la firma de su método DAO, el único problema que debe tener en cuenta es cómo crea su asignación. iBatis admite solo un parámetro de entrada, y usted debe decidir su clase (atributo parameterType) para empacar sus dos parámetros originales en uno.

En este escenario que podría (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) pasan a un maniquí UserBean con esas dos propiedades establecidas.

En ambos casos, el embalaje (construyendo el HashMap o el UserBean ficticio que contiene los dos parámetros) se haría dentro de su método public UserBean getUser(String userName, String password).

+0

Gracias por su respuesta. No tengo que cambiar mis métodos DAO, lo que quería saber (en general) iBatis admite múltiples parámetros en los métodos de interfaz del mapeador :) – jjczopek

Cuestiones relacionadas