Spring작업 시 웹 페이지에서 서버로 혹은 서버에서 웹 페이지로 데이터를 보내는 경우
페이지 이동이나 ajax 를 사용한 데이터 이동 시 데이터를 쓰기 편한 형태로 변환할 필요가 있다.
HttpServletRequest 의 getParameterMap() 으로 만들어지는 map의 값이 String형태의 Array이다.
위 형태의 데이터로 ibatis 에서 map을 사용하면 제대로 동작하지 않으므로 Parameter의 값을 HashMap<String, Object>형태로 변환하고자 한다.
우선 Controller로 받아온 HttpServletRequest를 가져온다.
Service.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Autowired private Mapper mapper; public List<Map<String, Object>> getInfoList(HttpServletRequest request) throws Exception { HashMap<String, Object> map = convertMap(request); return mapper.getInfo(map); } public Map<String, Object> getInfo(HttpServletRequest request) throws Exception { HashMap<String, Object> map = convertMap(request); return mapper.getInfo(map); } | cs |
convertMap 함수를 이용해 웹페이지에서 가져온 HttpServletRequest 에 데이터를 HashMap<String, Object>으로 수정해서 반환한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public HashMap<String, Object> convertMap(HttpServletRequest request) { HashMap<String, Object> hmap = new HashMap<String, Object>(); String key; Enumeration<?> enum = request.getParameterNames(); while (enum.hasMoreElements()) { key = (String) enum.nextElement(); if (request.getParameterValues(key).length > 1) { hmap.put(key, request.getParameterValues(key)); } else { hmap.put(key, request.getParameter(key)); } } return hmap; } | cs |
Mapper의 return 값 selectList 혹은 selectOne 에 따라 List 형태로 반환할 수 있다.
Mapper.java
1 2 3 | List<Map<String, Object>> getInfoList(Map<String, Object> param); Map<String, Object> getInfo(Map<String, Object> param); | cs |
변환된 HashMap은 ibatis를 사용한 Mapper.xml에 parameterType="hmap" 으로 사용 가능하다.
Mapper.xml
1 2 3 4 5 | <select id="getInfo" parameterType="hmap" resultType="hmap"> SELECT NAME, AGE, TEL, ADDR FROM INFO_TB WHERE NAME LIKE '%' || #{name} || '%' </select> | cs |
ㅇ
'Back-End > Spring' 카테고리의 다른 글
[Spring ] Service와 dao의 차이 (3) | 2018.10.10 |
---|