O corpo original de Mybatis é ibatis e agora se separou da Fundação Apache. O novo site oficial é http://www.mybatis.org/.
Eu não sabia o uso mágico desta anotação antes de estudar o código -fonte Mybatis, mas quando vi que houve essa anotação ao analisar o parâmetro, entendi que quando retornamos tipos como mapa <string, mapa <string, objeto >>, geralmente é difícil para fazê -lo, porque pode ser dados de várias tabelas, portanto, é impossível para construir outro modelo.
Então podemos usar esta anotação
@Retention (retentionpolicy.runtime) @target (elementType.method) public @interface mapkey {string value ();}É óbvio que essa anotação é usada no método e o uso específico é definir qual é a chave do mapa externo. Dessa forma, podemos consultar resultados muito complexos sem criar uma nova entidade.
PS: Vamos dar uma olhada no Mybatis usando a anotação @mapkey para receber vários registros de consulta no mapa, para obter facilmente o valor do campo usando o método get ().
Cenário de requisito:
Fie em lote vários dados do banco de dados, incluindo dois campos: id e nome. Espero que o resultado possa ser recebido diretamente usando o mapa e, em seguida, o valor do nome possa ser facilmente obtido através do map.get (id).
pergunta:
Se você usar o código a seguir, se houver vários resultados da consulta, será relatado um erro, porque o Mybatis salva os resultados no mapa na forma de ("id": 123) e ("nome": "jack"). Portanto, se você retornar o resultado, não há problema em ter um registro, incluindo ID e nome; Se você retornar vários registros, ou seja, existem múltiplos ("id": 123) e ("id": 124), o mybatis será estúpido e não saberá como lidar com isso.
Mapa <string, objeto> m = abcdao.getNamesByIds (iDList);
A solução é usar outro mapa lá fora:
Mapa <inteiro, mapa <string, objeto >> m = abcdao.getNamesByIds (iDList);
Em seguida, adicione uma anotação a este método:
<span style = "space branco: pré"> </span>/** <span style = "space branco: pré"> </span> * Obtenha o nome em lotes com base em vários ids <span style = "span span: precengo </span> * @param lista da lista de mapa =" id "<span =" styles space: pré "> </span> style = "espaço branco: pré"> </span> */<span style = "space branco: pré"> </span> @mapkey ("id") <span style = "space branco: pré"> </span> mapa public <inteiro, mapa <string, objeto >> getNamesByids (list <pap <pin String, object>> list);Esta anotação indica que a chave do mapa mais externo é o valor do campo chamado "ID" no resultado da consulta.
A configuração no mapper.xml é a seguinte:
<select id = "getNamesByIds" resultType = "java.util.map"> selecione ID, nome em tb_abc onde id em <foreach item = "item" collection = "list" Open = "(" separador = "," Close = ")"> #{ite.id} </forEach> </select>O exposto acima é uma explicação detalhada do uso do @MapKey in Mybatis Anotation apresentado a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!