반응형
mssql 데이터 입력 시 varchar로 컬럼을 만들었더니 특수문자가 물음표로 표시되는 오류가 발생했다.
그래서 컬럼을 nvarchar로 변경하고 insert/update 시 nvarchar로 수정하려고 봤더니 그냥은 안 된단다.
우선 NVarchar 타입 핸들러를 만든다.
package com.iems.config;
import ch.qos.logback.classic.db.names.ColumnName;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@MappedJdbcTypes(JdbcType.NVARCHAR)
public class NVarcharTypeHandler extends BaseTypeHandler {
private static final Logger logger = LoggerFactory.getLogger(NVarcharTypeHandler.class);
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
ps.setNString(i, (String) parameter);
}
@Override
public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {
return rs.getNString(columnName);
}
@Override
public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return rs.getNString(columnIndex);
}
@Override
public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return cs.getNString(columnIndex);
}
}
factoryBean에 해당 내용에 대한 설정을 해주고,
factoryBean.setTypeHandlers(
new NVarcharTypeHandler[]{
});
쿼리 수정하면 끝!
#{contents,jdbcType=NVARCHAR,typeHandler=com.test.handler.NVarcharTypeHandler},
반응형