【问题标题】:Java pagination issue print PrintwriterJava分页问题打印Printwriter
【发布时间】:2021-08-17 06:59:08
【问题描述】:

我尝试使用 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,我至少需要知道检索到的元素的确切数量。

谢谢。

【问题讨论】:

  • @Abra 是 MySQL

标签: java sql select pagination printwriter


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2018-05-12
    相关资源
    最近更新 更多