배열로 저장된 여러 값들을 Mybatis의 sql문으로 적용하는 법에 대해서 알아보자.
jsp > controller > service > DAO > mybatis
@RequestMapping(value = { "/deleteMulti" }, method = RequestMethod.POST)
public ModelAndView deleteMulti(HttpServletRequest httpServletRequest, @RequestParam Map<String, Object> params,
ModelAndView modelAndView) {
// modelAndView.addObject("resultMap", resultMap);
String[] deleteMultis = httpServletRequest.getParameterMap().get("COMMON_CODE_ID");
params.put("deleteMultis", deleteMultis);
Object resultMap = commonCodeOurService.deleteMulti(params);
modelAndView.setViewName("commonCode_our/list");
return modelAndView;
}
HttpServletRequest 클래스를 이용해 배열로 된 deleteMultis라는 배열을 만들었다.
deleteMultis를 params에 put해주고 commonCodeOurService.deleteMulti(params)
서비스로 넘겨 준다.
HttpServletRequest를 이용해 여러 파라미터를 받아오는 방법은 다음 링크를 참고.
여러체크박스파라미터를받아오자
public Object deleteMulti(Object dataMap){
String sqlMapId = "CommonCodeOur.deleteMultiByUIDs";
Object result = commonCodeOurDao.delete(sqlMapId, dataMap);
return result;
}
public Object delete(String sqlMapId, Object dataMap){
Object result = sqlSessionTemplate.delete(sqlMapId, dataMap);
return result;
}
sqlSessionTemplate
를 이용해서 서비스에서 받아온 sqlMapId, dataMap을 Mybatis로 넘겨주게 된다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="CommonCodeOur">
<!-- call CommonCodeOur.deleteMultiByUIDs -->
<delete id="deleteMultiByUIDs" parameterType="Map">
DELETE FROM CIP_COMMON_CODE
WHERE COMMON_CODE_ID IN
<foreach collection="deleteMultis" item="item"
open="(" separator="," close=")">
#{item}
</foreach>
</delete>
</mapper>
받아온 sqlMapId(CommonCodeOur.deleteMultiByUIDs)로 매핑된 sql문에 접근하여 foreach문을 통해서 sql문에 리스트에 담긴 값들을 넣어주게 된다.
foreach문의 속성