Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JdbcTemplate的分页查询_Java_Spring_Jdbctemplate_Spring Jdbc - Fatal编程技术网

Java 使用JdbcTemplate的分页查询

Java 使用JdbcTemplate的分页查询,java,spring,jdbctemplate,spring-jdbc,Java,Spring,Jdbctemplate,Spring Jdbc,我目前正在进行一个迁移项目,将数据从旧数据库迁移到新数据库(请不要问我为什么要使用Java应用程序,这是客户需要的) 我现在正在更新一些初始代码。我正在改变的一件事是使用Spring的JdbcTemplate,而不是原来的锅炉板代码 不幸的是,我还没有找到在jdbc模板上执行分页查询的方法,类似于旧代码: Statement statement = getConnection().createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSe

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

我现在正在更新一些初始代码。我正在改变的一件事是使用Spring的
JdbcTemplate
,而不是原来的锅炉板代码

不幸的是,我还没有找到在
jdbc模板上执行分页查询的方法,类似于旧代码:

Statement statement = getConnection().createStatement(
    ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
statement.setFetchDirection(ResultSet.FETCH_FORWARD);
statement.setFetchSize(1000);
return statement.executeQuery();
getConnection()
只返回一个用普通JDBC代码创建的
Connection
对象(它不是
SessionFactory
或框架实现的一部分)

然后我将在结果集上循环,一次映射一行。有人知道有没有一种简单的方法可以通过
JdbcTemplate
实现相同的功能


你是说像这样的事吗

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
);

我认为这种应用的自然选择是(阅读令人印象深刻的文章)

以下是与您相关的部分:



特别是

不完全是这样,这将返回并映射id大于666的所有记录。我需要一个解决方案,将返回一个记录的时间和地图。谢谢你的回复!请不要问我为什么要使用Java应用程序,这是客户需要的。这也是一个好主意。你能详细说明一下吗?基本上:我脑子里想的是春季批次。它所做的很多事情:块处理、事务管理、可重启性等等,仅仅使用SQL是不可能的。谢谢你的时间和帮助!它可以完成工作,还有更多,但它也非常复杂。目前我自己也在努力解决这个问题:-)
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")));
            }

        }
);