resultMap 의 용법 및 관련 결과 집합 맵
resultType 은 조회 결 과 를 pojo 형식 에 밀봉 할 수 있 지만 pojo 류 의 속성 명 과 조회 한 데이터베이스 시트 의 필드 이름 이 일치 해 야 합 니 다.
sql 에서 조회 한 필드 가 pojo 의 속성 명 과 일치 하지 않 으 면 resultMap 을 사용 하여 필드 이름과 속성 명 을 대응 시 켜 수 동 으로 패키지 설정 을 하여 결 과 를 pojo 에 표시 해 야 합 니 다.
resultMap
resultMap 은 검색 결 과 를 복잡 한 유형의 pojo 로 표시 할 수 있 습 니 다.예 를 들 어 검색 결과 맵 대상 에 pojo 와 list 를 포함 하여 1 대 1 조회 와 1 대 다 중 조 회 를 실현 할 수 있 습 니 다.
먼저 Mapper 파일 에 기본 sql 문 구 를 설정 합 니 다.
<!-- -->
<!-- resultMap: resultMap id -->
<select id="queryOrderAll" resultMap="orderResultMap">
SELECT id, user_id,
number,
createtime, note FROM `order`
</select>
resultMap 탭 을 설정 하고 필드 와 속성 이름 을 표시 합 니 다.
<!-- resultMap pojo ,type pojo -->
<!-- id: ResultMap id -->
<resultMap type="order" id="orderResultMap">
<!-- , 。 , id -->
<!-- property: pojo -->
<!-- column: -->
<id property="id" column="id" />
<!-- -->
<result property="userId" column="user_id" />
<result property="number" column="number" />
<result property="createtime" column="createtime" />
<result property="note" column="note" />
</resultMap>
결 과 는 pojo 형식 에 봉 인 될 수 있 습 니 다.resultMap 을 사용 하여 관련 조 회 를 진행 합 니 다.
일대일 조회
일대일 데이터 모델:주문 사용자
하나의 주문 정 보 는 한 사람 이 내 린 주문 일 수 있 기 때문에 주문 정 보 를 조회 하 는 것 에서 출발 하여 관련 조회 사용자 정 보 를 일대일 로 조회 합 니 다.사용자 정보 에서 출발 하여 사용자 의 주문 정 보 를 조회 하면 한 쌍 의 다 중 조회 입 니 다.왜냐하면 한 사용자 가 여러 개의 주문 을 할 수 있 기 때 문 입 니 다.
개조 pojo 류
주문 류 에 User 속성 을 추가 합 니 다.User 속성 은 참조 형식 으로 관련 조회 의 사용자 정 보 를 저장 하 는 데 사 용 됩 니 다.관련 관 계 는 1 대 1 이기 때문에 하나의 속성 만 추가 하면 됩 니 다.
Mapper.xml 프로필 설정
OrderMapper.xml
id 와 result 속성 을 사용 하여 order 류 의 결과 집합 을 매 핑 한 다음,association 을 사용 하여 관련 대상 User 의 결과 집합 을 매 핑 합 니 다.
<resultMap type="order" id="orderUserResultMap">
<id property="id" column="id" />
<result property="userId" column="user_id" />
<result property="number" column="number" />
<result property="createtime" column="createtime" />
<result property="note" column="note" />
<!-- association : -->
<!-- property:order User -->
<!-- javaType: -->
<association property="user" javaType="user">
<!-- id: , user_id -->
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="address" column="address" />
</association>
</resultMap>
<!-- , , -->
<select id="queryOrderUserResultMap" resultMap="orderUserResultMap">
SELECT
o.id,
o.user_id,
o.number,
o.createtime,
o.note,
u.username,
u.address
FROM
`order` o
LEFT JOIN `user` u ON o.user_id = u.id
</select>
테스트
@Test
public void testQueryOrderUserResultMap() {
// mybatis spring , , spring
SqlSession sqlSession = this.sqlSessionFactory.openSession();
// Mapper , , spring
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// userMapper , Order
List<Order> list = userMapper.queryOrderUserResultMap();
for (Order o : list) {
System.out.println(o);
}
// mybatis spring , , spring
sqlSession.close();
}
결실한 쌍 의 다 중 조회
모든 사용자 정보 및 관련 주문 서 를 조회 합 니 다.
pojo 류 를 수정 하여 pojo 류 에 주문 집합 속성 을 추가 합 니 다.
UserMapper.xml 프로필 수정
먼저 id 와 result 를 사용 하여 사용자 클래스 의 결 과 를 매 핑 한 다음 다 중 관계 의 collection 태그 로 Order 결 과 를 설정 합 니 다.
<resultMap type="user" id="userOrderResultMap">
<id property="id" column="id" />
<result property="username" column="username" />
<result property="birthday" column="birthday" />
<result property="sex" column="sex" />
<result property="address" column="address" />
<!--
property: pojo
javaType:
-->
<collection property="orders" javaType="list" ofType="order">
<!-- , Order -->
<id property="id" column="oid" />
<result property="number" column="number" />
<result property="createtime" column="createtime" />
<result property="note" column="note" />
</collection>
</resultMap>
<!-- , -->
<select id="queryUserOrder" resultMap="userOrderResultMap">
SELECT
u.id,
u.username,
u.birthday,
u.sex,
u.address,
o.id oid,
o.number,
o.createtime,
o.note
FROM
`user` u
LEFT JOIN `order` o ON u.id = o.user_id
</select>
테스트 결과이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ybatis 결과 세트가 자동으로 매핑되는 인스턴스 코드ybatis를 사용할 때, 때때로 우리는resultMap을 정의하지 않고 문장에 직접resultType을 지정할 수 있습니다.이때는 사실 Mybatis의 결과집이 자동으로 비치는 데 사용되었다.Mybatis의 자동 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.