티스토리 뷰

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


'IT 작업 > Spring' 카테고리의 다른 글

[Spring ] Service와 dao의 차이  (0) 2018.10.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함