티스토리 뷰
jsp 에서
var cList = new Array();
cList.push("5");
cList.push("6");
해서 값을 넘기고 mybatis에서 쓸려고 했는데
<if test="cList != null"> AND AA in
<foreach collection="cList" item="C_MM" index="index" separator="," open="(" close=")"> #{C_MM,jdbcType=VARCHAR} </foreach>
</if>
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression
'cList'. Return value (["5","6"]) was not iterable.
이런 에러가 났다.
흠.. 구글링 해보니 mybatis에서 foreach를 사용하려면 리스트같이 순회할 수 있는 데이터 형이어야 한다고 한다.
단순 String으로 map에 넣으면 쿼리 실행할 때 Return value was not iterable. 오류가 난다고 한다.
그래서
public static List<String> getStringListValue(Object obj) throws Exception {
if(obj == null){
return null;
}
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue((String) obj, List.class);
}
위와 같은 메소드를 만들고
cList = CommonUtil.getStringListValue(requestParam.get("cList"));
sMap.put("cList", cList);
이런식으로 했더니 되었다.
즉,
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue((String) obj, List.class);
이런식으로 자바스크립트 배열 스트링을 자바 리스트로 변경하였다.
뭐가 다른지 찍어보니
cList={["5","6"]}
cList={[5, 6]}
이렇게 스트링 형식은 ["5","6"] 이렇게 되어 있고
리스트 형식은 [5, 6] 이렇게 되어 있다.
'MyBatis' 카테고리의 다른 글
mybatis api document java doc api download (0) | 2022.03.14 |
---|---|
insert 후 키 리턴 (0) | 2022.03.14 |
org.apache.ibatis.binding.BindingException : Type interface is not known to the (0) | 2021.04.27 |
org.apache.ibatis.binding.BindingException (0) | 2021.04.16 |
[mybatis] java.lang.ClassCastException: java.util.HashMap cannot be cast to java (0) | 2021.02.23 |
- Total
- Today
- Yesterday
- 파싱
- 자바
- php
- 파이썬
- C
- EC
- proc
- 라이믹스 모듈
- ocajp
- 인포믹스
- webix
- esql
- XE3
- 자바 smtp
- 스크래핑
- C언어
- JDBC
- 문자열
- XE
- KG
- 이클립스
- MySQL
- xe애드온
- 오라클
- 플러터
- 프로씨
- xe addon
- 포인터
- Python
- ocjap
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |