使用java实现分页功能
分页的实现在日常的开发中会经常遇到,编写一个分页工具类,以后可以直接引用了,呵呵。。。
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 <Person>
11 */
12 public class PageModel<E> {
13
14 //结果集
15 private List<E> 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<E> getList() {
57 return list;
58 }
59 public void setList(List<E> 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<E>
12 */
13 public PageModel<Person> findUserList(int pageNo,int pageSize){
14 PageModel<Person> 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<Person> personList = new ArrayList<Person>();
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<Person>();
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 block
109 e.printStackTrace();
110 }
111 }
112 return count;
113 }
114 }