使用 MyBatis ResultHandler
可以一次处理一个结果对象。
不幸的是,如果 ResultMap
很复杂,则对象将不完整。
有解决方法吗?
我需要提取大约 500000 行,我想通过单个对象进行处理和丢弃。
最佳答案
您可以尝试使用 Cursor 而不是 ResultHandler
这是 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
}
}
它是比 ResultHandler
更高级别的抽象,并且它确实尊重所有映射。
关于Java - MyBatis - 一次处理一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51213255/