El cuerpo original de MyBatis es Ibatis, y ahora se ha separado de la Fundación Apache. El nuevo sitio web oficial es http://www.mybatis.org/.
No sabía el uso mágico de esta anotación antes de estudiar el código fuente de MyBatis, pero cuando vi que había esta anotación al analizar el parámetro, entendí que cuando devolvemos tipos como map <cadena, map <string, object >>, a menudo es difícil para nosotros hacerlo, porque puede ser datos de múltiples tablas, por lo que es imposible para nosotros construir otro modelo.
Entonces podemos usar esta anotación
@Retention (retenciónPolicy.Runtime) @Target (elementType.method) public @Interface MapKey {String Value ();}Es obvio que esta anotación se usa en el método, y el uso específico es establecer cuál es la clave del mapa externo. De esta manera, podemos consultar resultados muy complejos sin crear una nueva entidad.
PD: Echemos un vistazo a MyBatis usando la anotación de @mapkey para recibir múltiples registros de consulta en el mapa, para obtener fácilmente el valor del campo usando el método get ().
Escenario de requisito:
Alclar a los lotes de varios datos de la base de datos, incluidos dos campos: ID y nombre. Espero que el resultado se pueda recibir directamente usando MAP, y luego el valor de nombre se puede obtener fácilmente a través de MAP.get (ID).
pregunta:
Si usa el siguiente código, si hay múltiples resultados de consulta, se informará un error, porque myBatis guarda los resultados en el mapa en forma de ("id": 123) y ("nombre": "Jack"). Entonces, si devuelve el resultado, está bien tener un registro que incluya identificación y nombre; Si devuelve múltiples registros, es decir, hay múltiples ("ID": 123) y ("ID": 124), entonces MyBatis será estúpido y no sabrá cómo lidiar con eso.
Map <string, object> m = abcdao.getNamesByids (idlist);
La solución es usar otro mapa afuera:
Map <integer, map <string, object >> m = abcdao.getNamesByids (idlist);
Luego, agregue una anotación a este método:
<span style = "white-space: pre"> </span>/** <span style = "white-space: pre"> </span> * Obtenga el nombre en lotes basados en múltiples IDS <span style = "White-space: pre"> </span> * @param Lista de lista Continuting Map Key = "ID" <span style = "White-space: pre"> </aPan Span Style <span style = "White space: White space:" ID "<Id span style =" White-space: pre "> <//@retran span style =" White space: White space: White space: style = "White-Space: pre"> </span> */<span style = "White-Space: pre"> </span> @mapkey ("id") <span style = "white-space: pre"> </span> mapa público <integer, map <string, object >> getNamesByids (list <map <string, object >> list);Esta anotación indica que la clave del mapa más externo es el valor del campo llamado "ID" en el resultado de la consulta.
La configuración en mapper.xml es la siguiente:
<Select id = "getNamesByids" resultType = "java.util.map"> select id, nombre de tb_abc donde id en <foreach item = "item" Collection = "List" Open = "(" Separator = "," Close = ")"> #{item.id} </boreach> </sect>>Lo anterior es una explicación detallada del uso de @mapkey en la anotación mybatis presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!