2021-03-18

0318 마이바티스 left outer join 으로 다중 셀렉트 하기

 

 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


시도해본것

  1. List<List<Object>> 타입으로 받기 -> resultMap을 한개밖에 못받음.. 이유를 모르겠음. resultMap = "~~Map,~~~Map...." 으로 지정해서 받아봤는데 맨앞에있는 한개 Map으로 밖에 맵핑이 안됨
  2. List<Map<String,Object>> 타입으로 받기 -> 에러남 . 원하는 map의 getter가 없다고 함. 결국엔 모든 데이터를 담는 superVO를 만들어야하나? 고민.
  3. 결국 각 도메인타입을 멤버변수로 가지고 있는 커다란VO를 생성

커다란 VO를 만들고
Mapper interface 수정하고

resultMap의 collection 타입으로 각자 맵 지정해주기

property = "VO객체 안의 멤버변수 이름( getter로 가져오게 된다)"

resultMap ="위에서 지정한 다른 resultMap들의 이름"




결과 VO가 값을 잘 받고있음을 알 수있다.


남은 문제 : categoryID가 null값이 뜨는데... 이건 내가 sql 문을 잘못쓴것같다

(오라클에서 실행했을 때도 categoryId가 안뜬다)


참고 블로그: https://m.blog.naver.com/PostView.nhn?blogId=10hsb04&logNo=221715217251&targetKeyword=&targetRecommendationCode=1

감사합니다!


댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...