代码之家  ›  专栏  ›  技术社区  ›  thomaux

使用JDBCTemplate的分页查询

  •  7
  • thomaux  · 技术社区  · 14 年前

    我目前正在研究一个迁移项目,将数据从旧数据库迁移到新数据库(请不要问我为什么要通过Java应用程序,这是客户需要的)。

    我现在正在更新一些初始代码。我要改变的一件事是用弹簧 JdbcTemplate 而是那里的锅炉板代码。

    不幸的是,我还没有找到在 使用 ,与旧代码类似:

    Statement statement = getConnection().createStatement(
        ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
    statement.setFetchDirection(ResultSet.FETCH_FORWARD);
    statement.setFetchSize(1000);
    return statement.executeQuery();
    

    这个 getConnection() 只要返回 Connection 对象,用纯JDBC代码创建(它不是 SessionFactory 或者框架实现)。

    然后,我将循环遍历结果集,一次映射一行。有人知道是否有一个简单的方法来实现相同的功能 使用 ?

    蒂亚

    2 回复  |  直到 14 年前
        2
  •  1
  •   Sean Patrick Floyd    14 年前

    SimpleJdbcTemplate template = new SimpleJdbcTemplate(dataSource);
    
    List<String> result = template.query("SELECT name FROM people WHERE id > ?",
        new RowMapper<String>() {
    
            public String mapRow(ResultSet rs, int rowNum) throws SQLException {
                return rs.getString("name");
            }
    
        }, 666
    );
    

    template.getJdbcOperations().query("SELECT name FROM people WHERE id > ?",
            new Object[] { 666 },
            new RowCallbackHandler() {
    
                public void processRow(ResultSet rs) throws SQLException {
                    System.out.println(String.format(
                        "Got '%s'", rs.getString("name")));
                }
    
            }
    );