博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现分页工具类(JDBC)
阅读量:6293 次
发布时间:2019-06-22

本文共 5329 字,大约阅读时间需要 17 分钟。

分页的实现在日常的开发中会经常遇到,编写一个分页工具类,以后可以直接引用了,呵呵。。。

1.分页工具类,封装分页信息

1 package com.student.util; 2 import java.util.List; 3  4 import com.student.entity.Person; 5  6 /** 7  * 封装分页信息 8  * @author Administrator 9  *10  * @param 
11 */12 public class PageModel
{13 14 //结果集15 private List
list;16 17 //查询记录数18 private int totalRecords;19 20 //第几页21 private int pageNo;22 23 //每页多少条记录24 private int pageSize;25 26 //总页数27 public int getTotalPages(){28 return (totalRecords + pageSize -1)/pageSize;29 }30 31 //首页32 public int getTopPage(){33 return 1;34 }35 36 //上一页37 public int getPreviousPage(){38 if(pageNo<=1){39 return 1;40 }41 return pageNo-1;42 }43 //下一页44 public int getNextPage(){45 if(pageNo>=getBottomPage()){46 return getBottomPage();47 }48 return pageNo+1;49 }50 51 //尾页52 public int getBottomPage(){53 return getTotalPages();54 }55 56 public List
getList() {57 return list;58 }59 public void setList(List
list) {60 this.list = list;61 }62 public int getTotalRecords() {63 return totalRecords;64 }65 public void setTotalRecords(int totalRecords) {66 this.totalRecords = totalRecords;67 }68 public int getPageNo() {69 return pageNo;70 }71 public void setPageNo(int pageNo) {72 this.pageNo = pageNo;73 }74 public int getPageSize() {75 return pageSize;76 }77 public void setPageSize(int pageSize) {78 this.pageSize = pageSize;79 }80 81 }

2.测试类

1 public class PageModelTest{  2     public static void main(String[] args){  3         int pageNo=1;  4         int pageSize=10;  5         findUserList(pageNo,pageSize);  6     }  7     /**  8      * 分页查询  9      * @param pageNo 第几页 10      * @param pageSize 每页多少条记录 11      * @return PageModel
12 */ 13 public PageModel
findUserList(int pageNo,int pageSize){ 14 PageModel
pageModel = null; 15 Connection conn = null; 16 PreparedStatement ps = null; 17 ResultSet rs = null; 18 //各数据库的分页语句不一样 19 20 /*oracle实现分页,三层嵌套,这里10应该为pageNo*pageSize ,0为(pageNo-1)*pageSize 21 String sql=" 22 select column1,column2,column3,column4,column5 from 23 (select rownum rn,column1,column2,column3,column4,column5 from 24 (select column1,column2,column3,column4,column5 from table_name order by column desc) 25 where rownum<=10) 26 where rn>0"; 27 */ 28 //mysql实现分页 29 String sql="select * from person order by id desc limit ?,? "; 30 conn=DBUtil.getUtil().getConnection(); 31 try { 32 ps=conn.prepareStatement(sql); 33 ps.setInt(1, (pageNo-1) * pageSize); 34 ps.setInt(2, pageSize); 35 rs=ps.executeQuery(); 36 List
personList = new ArrayList
(); 37 while(rs.next()){ 38 Person person=new Person(); 39 person.setName(rs.getString("stu_name")); 40 person.setPassword(rs.getString("stu_psw")); 41 person.setNumber(rs.getString("stu_number")); 42 person.setBirthday(rs.getDate("stu_birth")); 43 person.setSex(rs.getInt("stu_sex")); 44 person.setPolity(rs.getInt("stu_polity")); 45 person.setBrief(rs.getString("stu_brief")); 46 person.setType(rs.getInt("type")); 47 person.setState(rs.getInt("state")); 48 personList.add(person); 49 } 50 pageModel = new PageModel
(); 51 pageModel.setList(personList); 52 pageModel.setTotalRecords(getTotalRecords(conn)); 53 pageModel.setPageSize(pageSize); 54 pageModel.setPageNo(pageNo); 55 } catch (SQLException e) { 56 // TODO Auto-generated catch block 57 e.printStackTrace(); 58 }finally{ 59 try { 60 if(rs!=null){ 61 rs.close(); 62 } 63 if(ps!=null){ 64 ps.close(); 65 } 66 if(conn!=null){ 67 conn.close(); 68 } 69 } catch (SQLException e) { 70 // TODO Auto-generated catch block 71 e.printStackTrace(); 72 } 73 } 74 return pageModel; 75 } 76 /** 77 * 得到总记录数,私有方法,外部无法访问,本类中使用 78 * @param conn 79 * @return 80 */ 81 private int getTotalRecords(Connection conn){ 82 PreparedStatement ps = null; 83 ResultSet rs = null; 84 85 String sql="select count(*) from person"; 86 87 conn=DBUtil.getUtil().getConnection(); 88 int count=0; 89 try { 90 91 ps=conn.prepareStatement(sql); 92 rs=ps.executeQuery(); 93 while(rs.next()){ 94 //此时根据sql语句查出的只有一列,否则不建议用int标识字段 95 count = rs.getInt(1); 96 } 97 } catch (SQLException e) { 98 e.printStackTrace(); 99 }finally{100 try {101 if(rs!=null){102 rs.close();103 }104 if(ps!=null){105 ps.close();106 }107 } catch (SQLException e) {108 // TODO Auto-generated catch block109 e.printStackTrace();110 }111 }112 return count;113 }114 }

转载于:https://www.cnblogs.com/slliang/archive/2012/08/22/2651053.html

你可能感兴趣的文章
Oracle计划新的移动OpenJDK项目
查看>>
Phantom.js维护者退出,项目的未来成疑
查看>>
Datical为数据库添加持续交付能力
查看>>
当中台遇上DDD,我们该如何设计微服务?
查看>>
2016年云巴产品更新合集
查看>>
央视在世界杯高清直播中占了C位 它是怎么做到的?
查看>>
新书问答:Company-Wide Agility
查看>>
Oracle将关闭Java.net和Kenai.com社区
查看>>
机器人操作系统来到Windows
查看>>
Propel项目改为基于TensorFlow.js
查看>>
Azure正式对外发布容器服务,支持Swarm和Mesos
查看>>
阿里巴巴收购以色列VR公司,大厂死磕VR为哪般?
查看>>
埃隆·马斯克:比特币拥有着“极为出色”的结构,而纸质货币终将消失
查看>>
如何用度量影响敏捷环境
查看>>
Facebook使用机器学习手段来自动优化其系统性能
查看>>
借助Unity AR Foundation构建跨平台AR应用
查看>>
Kubernetes 落地案例|使用 Kubernetes 重新部署全球最大的教育公司
查看>>
手工测试对比自动化测试
查看>>
vue.js快速入门
查看>>
浅论服务端应用程序开发中的CAP思想(非分布式系统中的CAP理论)
查看>>