如何使用spring jdbc获取n个记录

时间:2015-09-28 13:34:40

标签: java spring spring-jdbc

我见过很多例子如下。但我没有得到任何解决我的问题的方法。

我使用以下代码来获取所有用户。

List<User> users = this.jdbcTemplate.query(
 "select * from user",
      new RowMapper<User>() {
           public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                    User user = new User();
                    user.setFirstName(rs.getString("firstname"));
                    user.setLastName(rs.getString("lastname"));
                    return user;
           }
         });

但上面代码的问题是,如果我在users表中有10万条记录,我将无法将数据保存在列表中。

所以我在fetchSource(100)上使用了jdbcTemplate函数。 我无法获得所有记录,它在两者之间停止。

请建议做什么。

[编辑] 为了添加以下问题,我将数据从oracle数据库表索引到elsticsearch。我不想一个接一个地处理,因为索引1000万条记录会很差。它不是一个Web应用程序,它是独立程序,它是基于spring boot构建的。

1 个答案:

答案 0 :(得分:3)

如果您希望逐个处理所有行而不将其保留在内存中,则可以使用RowCallbackHandler

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/RowCallbackHandler.html

如果您只想获取几行,只需为查询添加限制select * from user limit 100