公共父类 import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.sql.*; public abstract class ArrayTypeHandlerextends BaseTypeHandler { @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 {
private static final String TYPE_INTEGER = "integer";
@Override
protected String getTypeName() {
return TYPE_INTEGER;
}
}
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 {
private static final String TYPE_VARCHAR = "varchar";
@Override
protected String getTypeName() {
return TYPE_VARCHAR;
}
}