java - Java分页问题打印Printwriter
问题描述
我尝试使用 PrintWriter 在 Java 中进行分页。我用这个作为模型:https ://www.javatpoint.com/pagination-in-servlet 。正如您在示例代码中看到的那样,为了处理 3 页和每页 5 个元素,完成了代码。
out.print("<a href='ViewServlet?page=1'>1</a> ");
out.print("<a href='ViewServlet?page=2'>2</a> ");
out.print("<a href='ViewServlet?page=3'>3</a> ");
int total=5;
我认为复制我的所有代码没有任何意义,因为从数据库中读取是可行的。我只想在每个页面上有 1 个元素,并且找到与元素一样多的页面。所以我用
String query = "select * from tabL where name like CONCAT( '%',?,'%') limit "
+ (start-1)+","+total;
开始为 1,总计为 1.. ResulSet 的大小为 1,但如果我使用它
out.print("<a href='ViewServlet?page=1'>1</a> ");
out.print("<a href='ViewServlet?page=2'>2</a> ");
out.print("<a href='ViewServlet?page=3'>3</a> ");
它也打印其他元素。因此,请帮助如何才能找到与元素一样多的页面,并且每页有 1 个元素。
我是否需要无限制地选择并使用由此获得的结果集的大小,是否有更好的解决方案?
PS:有人请解释我如何限制 1,1 ResulSet 的大小为 1 但它至少可以打印 3 个元素。
即使限制为 1,我至少需要知道检索到的元素的确切数量。
谢谢你。
解决方案
要查找总计数,您可以使用计数查询:
String countQuery = "select count(*) from tabL where name like CONCAT( '%',?,'%')";
当您使用与数据查询相同的参数执行此查询时,您将获得ResultSet
一行一列的数据。
您可以使用
Connection con = ...; // you probably already have a Connection
PreparedStatement ps = con.prepareStatement(countQuery);
ps.setString(1, name); // the name pattern that you're searching for
ResultSet rs = ps.executeQuery();
int count = 0;
if (rs.next()) {
count = rs.getInt(1);
}
推荐阅读
- python - Selenium 定位方法不会为 PyAutoGui 返回相同类型的坐标
- python - 如何从 CLI 访问我的自定义 python 脚本以便它们对任何文件执行操作?
- java - Java JPA 负载平衡读取查询以读取 MySql DB 从站
- javascript - 为什么 SVG 没有正确渲染?
- bixby - Bixby:音频播放器概念
- angular - 如何修复“找不到模块'@angular/core'”。message-format-config.d.ts 中的 InjectionToken(错误 TS2307)
- mongodb - 如何正确编写嵌套的 bson.M{}
- php - MethodNotAllowedHttpException 有问题
- ios - 存档时找不到 FirebaseMessaging.h 文件
- c# - 如何在 NEST、C# 中为 date_histogram 按周编写等效查询