栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

由ResultSet支持的Java迭代器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

由ResultSet支持的Java迭代器

这是一个坏主意。这种方法要求连接一直保持打开状态,直到读取最后一行为止,并且在DAO层之外,您永远都不知道何时会发生连接,并且您似乎也保持结果集处于打开状态,并且在这种情况下可能会导致资源泄漏和应用程序崩溃连接超时。你不想那样。

正常JDBC的做法是,你购买

Connection
Statement
ResultSet
最短的
可能范围。通常的做法是,将多行映射到a
List
或a中,
Map
然后猜测它们 确实 有一个
Iterator

public List<Data> list() throws SQLException {    List<Data> list = new ArrayList<Data>();    try (        Connection connection = database.getConnection();        Statement statement = connection.createStatement("SELECt id, name, value FROM data");        ResultSet resultSet = statement.executeQuery();    ) {        while (resultSet.next()) { list.add(map(resultSet));        }    }    return list;}private Data map(ResultSet resultSet) throws SQLException {    Data data = new Data();     data.setId(resultSet.getLong("id"));    data.setName(resultSet.getString("name"));    data.setValue(resultSet.getInteger("value"));    return data;}

并如下使用:

List<Data> list = dataDAO.list(); int count = list.size(); // Easy as that.Iterator<Data> iterator = list.iterator(); // There is your Iterator.

不要像您最初想要的那样将昂贵的数据库资源传递到DAO层之外。有关常规JDBC实践和DAO模式的更多基本示例,您可能会发现本文很有用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497609.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号