Java 分页问题打印 Printwriter

Java pagination issue print 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 个元素。

我是否需要一个没有限制的 select 并使用由此获得的结果集的大小,是否有更好的解决方案?

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