4개 테이블이 엮인 다중 셀렉트문
select * from tbl_orderitem o
left outer join tbl_user u on o.user_id = u.user_id
left outer join
(select * from tbl_product p left outer join tbl_category c on p.category_id = c.category_id)
p on p.product_id = o.product_id
시도해본것
- List<List<Object>> 타입으로 받기 -> resultMap을 한개밖에 못받음.. 이유를 모르겠음. resultMap = "~~Map,~~~Map...." 으로 지정해서 받아봤는데 맨앞에있는 한개 Map으로 밖에 맵핑이 안됨
- List<Map<String,Object>> 타입으로 받기 -> 에러남 . 원하는 map의 getter가 없다고 함. 결국엔 모든 데이터를 담는 superVO를 만들어야하나? 고민.
- 결국 각 도메인타입을 멤버변수로 가지고 있는 커다란VO를 생성
Mapper interface 수정하고
resultMap의 collection 타입으로 각자 맵 지정해주기
property = "VO객체 안의 멤버변수 이름( getter로 가져오게 된다)"
resultMap ="위에서 지정한 다른 resultMap들의 이름"
결과 VO가 값을 잘 받고있음을 알 수있다.
남은 문제 : categoryID가 null값이 뜨는데... 이건 내가 sql 문을 잘못쓴것같다
(오라클에서 실행했을 때도 categoryId가 안뜬다)
감사합니다!
댓글 없음:
댓글 쓰기