Mybatis에서 @MapKey 사용 설명
Mybatis 원본을 연구하기 전에는 이 주석의 묘용을 몰랐지만 매개 변수 해석을 보았을 때 이 주석이 있었다. 그래서 나는 우리가 맵
이때 우리는 이 주석을 사용할 수 있다
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MapKey {
String value();
}
분명히 이 주석은 방법 위에 작용하는데 구체적인 용법은 바깥맵을 설치한 KEY가 무엇인지이다.이렇게 하면 우리는 새로운 실체를 세우지 않고 매우 복잡한 결과를 조회할 수 있다.PS: 다음은 MyBatis가 @MapKey 메모를 사용하여 여러 개의 조회를 맵에 기록하여 get () 방법으로 필드의 값을 쉽게 얻을 수 있도록 합니다.
필요한 장면:
대량으로 데이터베이스에서 id와name 두 필드를 포함한 몇 개의 데이터를 찾아냅니다.결과를 맵으로 직접 받아서 맵을 통과했으면 좋겠어요.get (id) 는name 값을 쉽게 가져옵니다.
질문:
다음 코드를 사용하면 검색 결과가 여러 개이면 오류가 발생합니다. 왜냐하면 MyBatis는 결과를 ("id": 123), ("name": "Jack") 형식으로 맵에 저장하기 때문입니다.따라서 결과가 id와name를 포함하는 기록으로 되돌아오면 문제없습니다.여러 개의 기록이 되돌아오면 ("id": 123), ("id": 124), MyBatis는 어떻게 처리해야 할지 모릅니다.
Map<String, Object> m = abcDao.getNamesByIds(idList);
해결 방법은 밖에서 맵을 하나 더 사용하는 것이다.
Map<Integer, Map<String, Object>> m = abcDao.getNamesByIds(idList);
그리고 이 dao의 방법에 주석을 추가합니다.
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * id
<span style="white-space:pre"> </span> * @param list Map key="id" list
<span style="white-space:pre"> </span> * @return
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>@MapKey("id")
<span style="white-space:pre"> </span>public Map<Integer, Map<String, Object>> getNamesByIds(List<Map<String, Object>> list);
이 주석은 가장 바깥쪽 맵의 키가 검색 결과의 필드 이름이 "id"인 값을 나타냅니다.Mapper.xml의 구성은 다음과 같습니다.
<select id="getNamesByIds" resultType="java.util.Map">
SELECT id, name FROM tb_abc WHERE id IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item.id}
</foreach>
</select>
위에서 말한 것은 편집자가 여러분께 소개한 Mybatis에서 @MapKey의 사용에 대한 상세한 설명입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.