1

查看DBUtils API 文档,我看不到是否可以查询 Set。

我应该使用 ResultSetHandler 的哪个实现来查询对象集?

4

1 回答 1

0

我不认为Set. Set您可以为如下所示创建一个通用处理程序。

public class SetHandler<T> implements ResultSetHandler<Set<T>> {
    private final RowProcessor rp = new BasicRowProcessor();
    private final Class<T> type;

    public SetHandler(Class<T> type) {
        this.type = type;
    }

    @Override
    public Set<T> handle(ResultSet rs) throws SQLException {
        Set<T> set = new HashSet<>();
        while (rs.next()) {
            set.add((T) this.rp.toBean(rs,type));
        }
        return set;
    }
}

一个缺点是该toBean方法尝试为 ResultSet 中的每一行查找 ResulSet Column-Bean 属性映射,其中toBeanList方法(由 BeanListHandler 使用)在每个列表中仅查找一次此映射。

有一个BeanMapHandler返回 HashMap 并且它在内部使用toBean方法,因此我认为对于 Sets/Maps 我们必须依赖toBean方法或编写自定义RowProcessor.

于 2018-05-03T09:43:00.857 回答