使用 jdbcTemplate 进行分页

Posted

技术标签:

【中文标题】使用 jdbcTemplate 进行分页【英文标题】:Paging with jdbcTemplate 【发布时间】:2013-01-23 04:34:17 【问题描述】:

我们现在面临的一个问题是处理我们从数据库中获得的大 ResultSet 的分页。

当前 SQL 存储过程返回的行调用 jdbcTemplate.query 范围从 100K 到 300K 并且分页在 extractData 方法内完成。

在用户中显示的页面只有 20 行。

这很慢,有没有办法使用jdbcTemplate从存储过程的结果中获取一页数据。

【问题讨论】:

【参考方案1】:

你可以看看this

一个很好的例子。

【讨论】:

【参考方案2】:

我相信 JdbcTemplate 没有特定的分页功能。但是,即使这样做也可能无法帮助您的代码运行得更快。

通常,面向用户的页面的大小不超过 200 行,因此查询 100-300K 行似乎过多并浪费大量内存。

您需要首先决定使用哪种分页策略。两种常见的策略是查询前 N 个页面,并将其存储在临时缓存中 - 或者仅查询足以填充一个页面大小(例如:200 行),并且仅在用户请求时才查询接下来的 200 行。

您还需要确定缓慢的真正原因是什么。行大小是一个因素,但不是唯一因素。您必须分析您的架构结构、索引、查询连接等。

请记住,在正常使用情况下 - 尽管您可以向用户展示多达 10000 个页面,但典型用户不太可能浏览所有这些页面 - 可能只有前 5-10 个页面很重要 - 因此如果可以的话,将结果集限制在一个小数字会更有意义

【讨论】:

用户显示的页面只有20行。

以上是关于使用 jdbcTemplate 进行分页的主要内容,如果未能解决你的问题,请参考以下文章

使用 jdbcTemplate 进行分页

JDBC Template

jdbcTemplate 后台接口中的分页

使用MockIto模拟声明

JdbcTemplate 的oracle分页

jdbctemplate怎么实现oracle分页查询