Java - MyBatis - 一次处理一条记录

标签 java mybatis resultset

使用 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/

相关文章:

java - HQL有什么好处?

java - JDBC SQL 中的结果集

PostgreSQL - 在返回结果集的存储过程中编写动态 sql

java - 替代 java.awt.imageproducer for android

mysql - myBatis 有条件插入非空值

java - Hibernate JPA 存储过程调用?

java - 如何使用 Mybatis 将 JavaBean 包含列表保存到 Sql?

java - MyBatis 选择生成器

java Action 监听器: implements vs anonymous class

java - 观察者模式无限循环