이 에러는 오라클에서 Long타입을 사용했을 때 MyBatis에서 Long타입을 제대로 가져오지 못해서 나는 에러다.
mybatis 설정 xml파일을 열어 다음의 내용을 추가해 준다.
< !-- 오라클에서 Long타입 가져오기 위한 핸들러 -->
<typeHandlers>
<typeHandler handler="com.test.study.handler.CLOBHandler" javaType="String" jdbcType="LONGVARCHAR"/>
</typeHandlers>
그다음 핸들러 클래스를 만들어 TypeHandler 인터페이스를 상속받아 메소드를 구현해 주면 된다.
CLOBHandler.java
package com.test.study.handler;
import java.io.StringReader;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
public class CLOBHandler implements TypeHandler<Object>{
@Override
public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)
throws SQLException {
String s = (String) parameter;
StringReader reader = new StringReader(s);
ps.setCharacterStream(i, reader, s.length());
}
@Override
public Object getResult(ResultSet rs, String columnName) throws SQLException {
return rs.getString(columnName);
}
@Override
public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
return cs.getString(columnIndex);
}
@Override
public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
// TODO Auto-generated method stub
return null;
}
}
'error > Spring' 카테고리의 다른 글
java.lang.ClassNotFoundException 에러 해결 방법 (6) | 2020.10.07 |
---|---|
[스프링 Error] org.json.simple.JSONObject cannot be cast to net.sf.json.JSONObject (0) | 2019.10.11 |
ajax로 list넘길때 406에러 (0) | 2019.09.20 |
스프링 JSON 406에러 (0) | 2019.06.24 |
파일 업로드시 Unable to process parts as no multi-part configuration has been provided 에러 (0) | 2019.06.21 |