mybatis自定义数组类型处理器用于pgsql数组类型字段
mybatis自定义数组类型处理器用于pgsql数组类型字段
·
公共父类
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.*;
public abstract class ArrayTypeHandler<T> extends BaseTypeHandler<T> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
Connection connection = ps.getConnection();
Array array = connection.createArrayOf(getTypeName(), (Object[]) parameter);
ps.setArray(i, array);
}
@Override
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
return getArray(rs.getArray(columnName));
}
@Override
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return getArray(rs.getArray(columnIndex));
}
@Override
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return getArray(cs.getArray(columnIndex));
}
protected abstract String getTypeName();
private T getArray(Array array) throws SQLException {
if(array == null){
return null;
}
return (T) array.getArray();
}
}
Long数组
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
@MappedTypes({Long[].class})
@MappedJdbcTypes({JdbcType.ARRAY})
public class LongArrayTypeHandler extends ArrayTypeHandler<Long[]> {
private static final String TYPE_INTEGER = "integer";
@Override
protected String getTypeName() {
return TYPE_INTEGER;
}
}
String数组
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
@MappedTypes({String[].class})
@MappedJdbcTypes({JdbcType.ARRAY})
public class StringArrayTypeHandler extends ArrayTypeHandler<String[]> {
private static final String TYPE_VARCHAR = "varchar";
@Override
protected String getTypeName() {
return TYPE_VARCHAR;
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)