Mybatis에서 @MapKey 사용 설명
Mybatis 원본을 연구하기 전에는 이 주석의 묘용을 몰랐지만 매개 변수 해석을 보았을 때 이 주석이 있었다. 그래서 나는 우리가 맵
이때 우리는 이 주석을 사용할 수 있다
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MapKey {
String value();
}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); 
<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); 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> 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.