mybatis存取oracle长数据clob方法
1.重写mybatis的sql执行器
package com.ai.gridoperation;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import java.sql.*;
/**
* 解决保存数据字段超过4000 char 问题
* @author yuans
* @create 2020-06-02-14:38
*/
public class OracleClobTypeHandler implements TypeHandler {
@Override
public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
Clob clob = ps.getConnection().createClob();
clob.setString(1, (String) parameter);
ps.setClob(i, clob);
}
@Override
public Object getResult(ResultSet rs, String columnName) throws SQLException {
Clob clob = rs.getClob(columnName);
return (clob == null || clob.length() == 0) ? null : clob.getSubString((long) 1, (int) clob.length());
}
@Override
public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
return null;
}
@Override
public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
return null;
}
}
2.保存使用
INSERT INTO
GR_MICROGRID(example)
VALUES(
#{shape,typeHandler=com.ai.gridoperation.OracleClobTypeHandler}
)
3.查询使用
select polygon from table
原文:https://www.cnblogs.com/ysit/p/13174253.html