java mysql 分页_数据库分页Java实现

MySQL分页

主要是MySQL数据库内置LIMIT函数

注意添加mysql的JAR包mysql-connector-java-5.1.13-bin.jar

select*fromtableLIMIT5,10;//检索记录行6-15

在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:

select * from content order by id desc limit 10000, 10

一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。

此时,我们可以通过2种方式:

一,子查询的分页方式来提高分页效率

select * from 'content' where id <=(select id from 'content' order by id desc LIMIT ".($page-1)*$pagesize.", 1) order by id desc LIMIT $pagesize;

为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多,所以操作起来也会更有效率。

经过飘易的实测,使用子查询的分页方式的效率比纯LIMIT提高了14-20倍!

二,JOIN分页方式

select * from 'content' as t1join (select id from 'content' order by id desc LIMIT ".($page-1)*$pagesize.", 1) as t2where t1.id <= t2.id order by t1.id desc LIMIT $pagesize;

经过我的测试,join分页和子查询分页的效率基本在一个等级上,消耗的时间也基本一致。

MySQL分页Java实现

MySQL分页
用户名所在城市职业

//加载驱动

Class.forName("com.mysql.jdbc.Driver");//得到连接

Connection ct =DriverManager.getConnection("jdbc:mysql://localhost:3306/tour", "root", "root");

Statement sm=ct.createStatement();//接收pageNow参数

String s_pageNow = request.getParameter("pageNow");int pageNow = 1;if (s_pageNow != null) {

pageNow=Integer.parseInt(s_pageNow);

}//查询总页数

int pageCount = 0;//当前为第几页

int pageSize = 3;//每页显示几条记录

int rowCount = 0;//总共有多少条记录

ResultSet rs= sm.executeQuery("select count(*) from users");if(rs.next()) {

rowCount= rs.getInt(1);if (rowCount % pageSize == 0) {

pageCount= rowCount /pageSize;

}else{

pageCount= rowCount / pageSize + 1;

}

}

rs= sm.executeQuery("select * from users limit "+ ((pageNow - 1) * pageSize + 1) +","+pageNow* pageSize+"");while(rs.next()) {

out.println("

");

out.println("

" + rs.getString(2) + "");

out.println("

" + rs.getString(5) + "");

out.println("

" + rs.getString(6) + "");

out.println("

");

}

out.println("

");//打印总页数

for (int i = 1; i < pageCount; i++) {

out.println("" + "第" +i+ "页" + "");

}

out.println("

");

rs.close();

sm.close();

ct.close();%>

Oracle分页

主要是3层的嵌套查询

注意添加Oracle的JAR 包classes12.jar

经典的SQL语句(用ROWNUM实现)

select*from(selecta1.*,rownumrnfrom(selectename,salfromemporderbysal) a1whererownum<=10)wherern >=6;

Oracle分页java实现

Oracle分页
用户名职业薪水

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");//得到连接

Connection ct =DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "SCOTT", "scott");

Statement sm=ct.createStatement();//接收pageNow参数

String s_pageNow = request.getParameter("pageNow");int pageNow = 1;if (s_pageNow != null) {

pageNow=Integer.parseInt(s_pageNow);

}//查询总页数

int pageCount = 0;//当前为第几页

int pageSize = 3;//每页显示几条记录

int rowCount = 0;//总共有多少条记录

ResultSet rs= sm.executeQuery("select count(*) from emp");if(rs.next()) {

rowCount= rs.getInt(1);if (rowCount % pageSize == 0) {

pageCount= rowCount /pageSize;

}else{

pageCount= rowCount / pageSize + 1;

}

}

rs= sm.executeQuery("select * from (select a1.*,rownum rn from (select * from emp ) a1 where rownum<="

+ pageNow

* pageSize

+ ") where rn >="

+ ((pageNow - 1) * pageSize + 1) + "");while(rs.next()) {

out.println("

");

out.println("

" + rs.getString(2) + "");

out.println("

" + rs.getString(3) + "");

out.println("

" + rs.getString(6) + "");

out.println("

");

}

out.println("

");//打印总页数

for (int i = 1; i < pageCount; i++) {

out.println("" + "第" +i+ "页" + "");

}

out.println("

");

rs.close();

sm.close();

ct.close();%>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java JSP中实现分页展示,你可以按照以下步骤进行操作: 1. 在JSP页面中,创建一个表格或其他适当的HTML元素来展示数据。 2. 在Java代码中,编写一个方法来连接数据库,并执行查询操作来获取数据。 3. 使用分页算法来确定每页显示的数据范围,并将其应用于查询结果。 4. 在JSP页面中使用循环语句(如`<c:forEach>`标签)来遍历查询结果,并将数据显示在表格中。 5. 创建一个分页导航栏,允许用户切换至不同的页面。 6. 根据用户的选择,更新分页算法的参数,并重新执行查询以获取新的数据。 以下是一个简单的示例代码,演示如何在JSP页面中实现基本的分页展示: ```java <%-- 在JSP页面中使用JSTL标签库 --%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%-- 设置每页显示的记录数 --%> <% int pageSize = 10; %> <%-- 获取当前页数(从请求参数中获取) --%> <% int currentPage = Integer.parseInt(request.getParameter("page")); %> <%-- 计算起始记录的索引 --%> <% int startIndex = (currentPage - 1) * pageSize; %> <%-- 连接数据库并执行查询操作 --%> <% // 导入必要的数据库连接和查询代码 Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 连接数据库 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); stmt = conn.createStatement(); // 执行查询 String query = "SELECT * FROM mytable LIMIT " + startIndex + ", " + pageSize; rs = stmt.executeQuery(query); // 在表格中显示查询结果 %> <table> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> <% while (rs.next()) { %> <tr> <td><%= rs.getInt("id") %></td> <td><%= rs.getString("name") %></td> <td><%= rs.getInt("age") %></td> </tr> <% } %> </table> <% } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库连接和结果集 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } %> <%-- 创建分页导航栏 --%> <div> <%-- 计算总页数 --%> <% int totalRecords = 100; %> <% int totalPages = (int) Math.ceil((double) totalRecords / pageSize); %> <%-- 显示分页导航链接 --%> <% for (int i = 1; i <= totalPages; i++) { %> <a href="?page=<%= i %>"><%= i %></a> <% } %> </div> ``` 请注意,上述代码只是一个简单的示例,仅用于演示如何在JSP页面中实现分页展示。根据你的具体需求,你可能需要进行更多的错误处理、参数验证和优化。同时,为了安全起见,你应该考虑使用预编译语句或对象关系映射(ORM)框架来执行数据库查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值