package org.gbif.checklistbank.service.mybatis.postgres; import java.sql.Array; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes; import org.apache.ibatis.type.MappedTypes; /** * @author Manni Wood */ @MappedJdbcTypes(JdbcType.OTHER) @MappedTypes(int[].class) public class IntegerArrayTypeHandler extends BaseTypeHandler<Integer[]> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Integer[] parameter, JdbcType jdbcType) throws SQLException { Connection c = ps.getConnection(); Array inArray = c.createArrayOf("int", parameter); ps.setArray(i, inArray); } @Override public Integer[] getNullableResult(ResultSet rs, String columnName) throws SQLException { Array outputArray = rs.getArray(columnName); if (outputArray == null) { return null; } return (Integer[])outputArray.getArray(); } @Override public Integer[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException { Array outputArray = rs.getArray(columnIndex); if (outputArray == null) { return null; } return (Integer[])outputArray.getArray(); } @Override public Integer[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { Array outputArray = cs.getArray(columnIndex); if (outputArray == null) { return null; } return (Integer[])outputArray.getArray(); } }