반응형
오라클에서는 Long Type이나 CLOB Type 컬럼을 select 할때 getCLOB() 가 구현되지 않았다면서 에러가 난다.
1. jdbc-context.xml ( spring 설정 파일 ) 에 mybatis-config.xml 추가
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource"
p:typeAliasesPackage="com.company.name"
p:configLocation="/WEB-INF/spring/mybatis-config.xml"
p:mapperLocations="classpath*:com/company/name/oracle/*.xml" />
2. /WEB-INF/spring/mybatis-config.xml 파일 작성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org/DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeHandlers>
<typeHandler handler="com.company.handler.LongHandler" javaType="String" jdbcType="LONGVARCHAR"/>
</typeHandlers>
</configuration>
3. LongHandler.java 파일 생성
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LongHandler implements TypeHandler{
private static final Logger logger = LoggerFactory.getLogger(LongHandler.class);
// 값을 받는 중요 값
@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(ResultSet arg0, int arg1) throws SQLException {
return arg0.getObject(arg1);
}
@Override
public Object getResult(CallableStatement arg0, int arg1) throws SQLException {
return arg0.getObject(arg1);
}
}
728x90
반응형
'Database ( DB ) > Database' 카테고리의 다른 글
[oracle] ORA-04091 테이블이 변경되어 트리거/함수가 볼 수 없습니다. (0) | 2019.08.11 |
---|---|
[mssql] sysservers에서 'xxxxx' 서버를 찾을 수 없습니다. sp_addlinkedserver를 실행하여 sysservers에 서버를 추가하십시오. 오류 해결방법 (0) | 2019.08.11 |
[oracle] 사용자가 생성한 모든 table, view 삭제 (0) | 2019.08.11 |
파티션테이블 제약사항 (0) | 2019.08.11 |
[centos 7] mariadb 설치 (0) | 2019.08.11 |