Mybatis의 원래 바디는 Ibatis이며 이제 Apache Foundation에서 분리되었습니다. 새로운 공식 웹 사이트는 http://www.mybatis.org/입니다.
나는 Mybatis 소스 코드를 연구하기 전에이 주석의 마법의 사용을 알지 못했지만 매개 변수를 구문 분석 할 때이 주석이 있음을 알았을 때 Map <String, Map <String, Object >>와 같은 유형을 반환 할 때 여러 테이블의 데이터 일 수 있기 때문에 종종 다른 모델을 구축하기가 불가능하다는 것을 이해했습니다.
그런 다음이 주석을 사용할 수 있습니다
@retention (rendentionpolicy.runtime) @target (elementtype.method) public @interface mapkey {String value ();}이 주석이 방법에 사용되며 특정 사용법은 외부 맵의 키를 설정하는 것입니다. 이렇게하면 새로운 엔티티를 만들지 않고도 매우 복잡한 결과를 쿼리 할 수 있습니다.
추신 : get () 메소드를 사용하여 필드의 값을 쉽게 얻기 위해 @Mapkey 주석을 사용하여 MYBATIS를 맵에 여러 쿼리 레코드를 수신하기 위해 MyBatis를 살펴 보겠습니다.
요구 사항 시나리오 :
ID와 이름의 두 필드를 포함하여 데이터베이스의 여러 데이터를 배치합니다. 맵을 사용하여 결과를 직접받을 수 있기를 바랍니다. 그런 다음 Map.get (id)를 통해 이름 값을 쉽게 얻을 수 있습니다.
질문:
다음 코드를 사용하는 경우 여러 쿼리 결과가있는 경우 MyBatis가 맵에서 결과를 ( "ID": 123) 및 ( "name": "jack") 형식으로 저장하기 때문에 오류 가보고됩니다. 따라서 결과를 반환하면 ID 및 이름을 포함한 레코드를 갖는 것이 좋습니다. 여러 레코드를 반환하면 여러 ( "ID": 123) 및 ( "ID": 124)가 있으면 Mybatis는 어리 석고 처리 방법을 모릅니다.
map <string, object> m = abcdao.getnamesbyids (idlist);
해결책은 외부의 다른 맵을 사용하는 것입니다.
Map <integer, map <string, object >> m = abcdao.getnamesbyids (idlist);
그런 다음이 방법에 주석을 추가하십시오.
<span style = "white"> </span>/** <span style = "화이트 공간 : pre"> </span> * 여러 ids <span style = "흰색 공간 : pre"> </span> * @param 목록 목록을 포함하는 <<span style = "white-space : pre"> </span> * <white spary < "> <"> < "> <"> < ">. 스타일 = "화이트 공간 : pre"> </span> */<span style = "화이트 공간 : pre"> </span> @mapkey ( "id") <스팬 스타일 = "화이트 공간 : pre"> </span> public map <정수, 맵 <문자열, 개체 >> getNamesByIds (list <map <string, object >> list);
이 주석은 가장 바깥 쪽지도의 키가 쿼리 결과에서 "ID"라는 필드의 값임을 나타냅니다.
mapper.xml의 구성은 다음과 같습니다.
<id id = "getNamesByIds"resultType = "java.util.map"> id, id, tb_abc에서 이름을 선택하십시오.
위는 편집자가 귀하에게 소개 한 Mybatis 주석에서 @mapkey의 사용에 대한 자세한 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!