Mybatis에서 @MapKey 사용 설명

2646 단어 mybatismapkey주해
mybatis의 원신은 ibatis입니다. 현재 아파치 기금회를 이탈했습니다. 새 홈페이지는http://www.mybatis.org/ .
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의 사용에 대한 상세한 설명입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기