Spring 중고 골프용품 플랫폼 프로젝트를 하면서
고객의 지역인증에 따라 표시되는 상품리스트를 다르게 표시해야 했다.
지역(위도,경도)정보는 member(회원테이블)에 있었고
내가 구현하는 거래파트에서는 product(상품테이블)을 사용하였기에
product테이블의 seller_id(판매자아이디)와 member테이블의 user_id를
join하여 쿼리문을 만들어야했다.
사소한거지만 내가 궁금했던건 mapper에 join쿼리문을 작성 시,
엔티티명 = #{엔티티명} 을 똑같이 써도 되는가?
가 궁금했다 ..
결론은
된다!
<!-- 지역인증 왔을 때 쓸 쿼리문 (성별구분X+최신순) -->
<select id="listAll" resultType="productVO">
select p.prod_num, p.seller_id, p.prod_name, p.prod_img, p.price, p.detail,
p.`condition`, p.category, p.gender, p.like_count,
p.prod_date, p.prod_img2, p.prod_img3, m.latitude, m.longitude
from mfg_products p join mfg_member m
on p.seller_id = m.user_id
**where category = #{category}
and latitude = #{latitude}
and longitude = #{longitude}**
order by prod_date desc
limit #{pageStart},#{perPageNum}
</select>
p.category = ${p.category} (X)
<!-- 지역인증 왔을 때 쓸 쿼리문 (성별구분O+최신순) -->
<select id="listAll" resultType="productVO">
select p.prod_num, p.seller_id, p.prod_name, p.prod_img, p.price, p.detail,
p.`condition`, p.category, p.gender, p.like_count,
p.prod_date, p.prod_img2, p.prod_img3, m.latitude, m.longitude
from mfg_products p join mfg_member m
on p.seller_id = m.user_id
where category = #{category}
and gender = #{gender}
and latitude = #{latitude}
and longitude = #{longitude}
order by prod_date desc
limit #{pageStart},#{perPageNum}
</select>