gpt4 book ai didi

java - 如何将 myBatis(iBatis) 结果作为 Iterable 获取。 (在非常大的行的情况下)

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:00 25 4
gpt4 key购买 nike

当使用 myBatis 时,我应该从数据库中获取非常大的结果集并进行后续操作。 (例如 CSV 导出)

我在想,也担心如果返回类型是List,所有返回的数据都在我的内存中,会导致OutOfMemoryException。

因此,我想使用 myBatis 将结果作为 ResultSet 或 Iterable 的类型。

告诉我任何解决方案。

最佳答案

从mybatis 3.4.1开始可以返回Cursor它是 Iterable 并且可以像这样使用(在结果有序的情况下,请参阅上面的 Cursor API java doc 了解详细信息):

MyEntityMapper.java

@Select({
"SELECT *",
"FROM my_entity",
"ORDER BY id"
})
Cursor<MyEntity> getEntities();

MapperClient.java

MyEntityMapper mapper = session.getMapper(MyEntityMapper.class);
try (Cursor<MyEntity> entities = mapper.getEntities()) {
for (MyEntity entity:entities) {
// process one entity
}
}

关于java - 如何将 myBatis(iBatis) 结果作为 Iterable 获取。 (在非常大的行的情况下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com