公共父类
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;
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐