VO로 묶여있지 않거나, 타입이 다른 복수의 parameter들을 전달할 때
HashMap 형태로 값을 보낼 수 있다.
1. 상품문의Service.java
판매자 페이지에서 상품 문의페이지를 출력하기 위한 service이다.
상품문의Service 에서 mapper로 전달할 parameter는
where절에 넣을 String 형태의 'sel_name(판매자명)'과
페이징 처리를 위해 limit에 넣어줄 int형태의 'pageIndex'가 있다.
sel_name은 현재 로그인한 member정보중 판매자 테이블에서 왜래키로 사용하고있는
mem_num으로 판매자정보를 불러왔고,
pageIndex는 페이지별로 결과값을 10개씩 받아올 수 있게 했다.
이 둘은 데이터타입이 다르기 때문에 parameterType을 통일할 수 없기 때문에
HashMap에 담아서 보내야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// 세션에 있는 member정보 받기
HttpSession session = request.getSession();
MemberVO member = (MemberVO)session.getAttribute("member");
// 세션의 member.mem_num으로 판매자정보 불러오기
SellerVO seller = sellerDAO.getSellerInfo(member.getMem_num());
// 상품 문의 리스트를 출력할 parameter들을 map에 넣는다.
Map<String, Object> listIndexMap = new HashMap<String,Object>();
// mySQL의 limit에 넣어줄 값
int pageIndex = (page-1)*10;
listIndexMap.put("pageIndex", pageIndex);
listIndexMap.put("sel_name", seller.getSel_name());
// 페이지 인덱스(pageIndex)를 DAO 클래스에 전달한다.
sellergoodsQnaList = goodsQnaDAO.getGoodsQnaList(listIndexMap); // 리스트를 받아옴
|
cs |
2. 상품문의 Mapper.xml
HashMap 으로 값을 전달할 경우 Mapper에서 parameterType을
"java.util.Map"으로 설정해야 한다.
값을 불러올 때에는 HashMap에 값을 담을때 설정한
key값으로 값을 불러올 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!-- 상품 문의글 가져오기 -->
<select id="select_goodsqna_list" parameterType="java.util.Map" resultType="goodsqna">
select
*
from goodsqna gq
left join goods g
on g.gds_num = gq.gds_num
left join goodsqnafiles gqf
on gqf.num = gq.gdsqna_num
where g.gds_seller=#{sel_name}
and gdsqna_delyn=1
and gdsqna_depth=0
group by gdsqna_num
order by gdsqna_num desc
limit #{pageIndex}, 10
</select>
|
cs |
콘솔창을 보면 값이 잘 넘어간 것을 확인할 수 있다.
'Spring > Mybatis' 카테고리의 다른 글
[Mybatis]Spring쇼핑몰 프로젝트 - selectKey 태그로 auto increment / currval 값 가져오기 (0) | 2021.12.15 |
---|