똑같은 삽질은 2번 하지 말자

MyBatis 에서 parameter를 두개 이상 주고 싶을때 본문

Spring/忘れやすい概念

MyBatis 에서 parameter를 두개 이상 주고 싶을때

곽빵 2019. 7. 14. 03:00

1. vo 객체에 담아서 하기(손이 좀 더가는방법)

2. Map을 이용해서 전달하기(좀더 쉽게 할 수 있다.)

 

이번에 이 Map 을 이용한 방법에 대해 다뤄보고자 한다.

 

 

@RequestMapping("admin_product_list.do")
public String aGetProductList(Model model,@RequestParam(value="currp",required=false)String currp,@RequestParam(value="pname",required=false)String pname) {
	int totalPage;
	Map<String,Object>map = new HashMap<String,Object>();
	if(currp == null)
		map.put("currp", 1);
	else
		map.put("currp", Integer.parseInt(currp));
	if(pname == null)
		pname = "";
	map.put("pname", pname);
	if(productService.getTotalRecord(pname)%5==0) 
		totalPage = productService.getTotalRecord(pname)/5 + 1;
	else
		totalPage = productService.getTotalRecord(pname)/5;
	System.out.println("totalPage: " + totalPage);
	System.out.println(map.get("currp") +"  "+ map.get("pname"));
	model.addAttribute("totalPage", totalPage);
	model.addAttribute("productList", productService.getCurrentProductList(map));
	return "admin/product/productList";
}

 

위 코드를 보면 map 을 선언해서 key를 

 


<select id="getCurrentProductList" resultType="product" parameterType="Map">
  <![CDATA[
    SELECT * FROM (SELECT ROWNUM R,A.*
    FROM (SELECT * FROM PRODUCT ORDER BY PSEQ) A)
    WHERE R BETWEEN #{currp}*5-4 AND #{currp}*5
    AND NAME LIKE '%'||#{pname}||'%'
  ]]>
</select>

parameterType="Map" 으로 받아서

Map의 key로 sql문에서 불러주면 된다.

Comments