java常用公共代码二之分页代码的实现

在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!!

二、分页代码实现:在项目中,分页是一个项目中必不可少的,它可以防止我们从数据库中进行大量数据查询时速度变慢,提高我们的查询效率

1、定义分页模型:PageModel

[java] view plain copy
 
  1. package com.common.page;  
  2.   
  3. import java.util.List;  
  4.   
  5. /** 
  6.  * 封装分页信息 
  7.  * @author Administrator 
  8.  * 
  9.  */  
  10. public class PageModel<E> {  
  11.   
  12.     //结果集  
  13.     private List<E> list;  
  14.       
  15.     //查询记录数  
  16.     private int totalRecords;  
  17.       
  18.     //每页多少条数据  
  19.     private int pageSize;  
  20.       
  21.     //第几页  
  22.     private int pageNo;  
  23.       
  24.     /** 
  25.      * 总页数 
  26.      * @return 
  27.      */  
  28.     public int getTotalPages() {  
  29.         return (totalRecords + pageSize - 1) / pageSize;  
  30.     }  
  31.       
  32.     /** 
  33.      * 取得首页 
  34.      * @return 
  35.      */  
  36.     public int getTopPageNo() {  
  37.         return 1;  
  38.     }  
  39.       
  40.     /** 
  41.      * 上一页 
  42.      * @return 
  43.      */  
  44.     public int getPreviousPageNo() {  
  45.         if (pageNo <= 1) {  
  46.             return 1;  
  47.         }  
  48.         return pageNo - 1;  
  49.     }  
  50.       
  51.     /** 
  52.      * 下一页 
  53.      * @return 
  54.      */  
  55.     public int getNextPageNo() {  
  56.         if (pageNo >= getBottomPageNo()) {  
  57.             return getBottomPageNo();  
  58.         }  
  59.         return pageNo + 1;    
  60.     }  
  61.       
  62.     /** 
  63.      * 取得尾页 
  64.      * @return 
  65.      */  
  66.     public int getBottomPageNo() {  
  67.         return getTotalPages();  
  68.     }  
  69.       
  70.     public List<E> getList() {  
  71.         return list;  
  72.     }  
  73.   
  74.     public void setList(List<E> list) {  
  75.         this.list = list;  
  76.     }  
  77.   
  78.     public int getTotalRecords() {  
  79.         return totalRecords;  
  80.     }  
  81.   
  82.     public void setTotalRecords(int totalRecords) {  
  83.         this.totalRecords = totalRecords;  
  84.     }  
  85.   
  86.     public int getPageSize() {  
  87.         return pageSize;  
  88.     }  
  89.   
  90.     public void setPageSize(int pageSize) {  
  91.         this.pageSize = pageSize;  
  92.     }  
  93.   
  94.     public int getPageNo() {  
  95.         return pageNo;  
  96.     }  
  97.   
  98.     public void setPageNo(int pageNo) {  
  99.         this.pageNo = pageNo;  
  100.     }  
  101. }  

2、分页测试:在MySQL中建立admin表,里面有字段id、name、password

3、简历Admin的实体bean类:

[java] view plain copy
 
  1. package com.common.page;  
  2.   
  3. public class Admin {  
  4.     private int id;  
  5.     private String name;  
  6.     private String password;  
  7.     public int getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(int id) {  
  11.         this.id = id;  
  12.     }  
  13.     public String getName() {  
  14.         return name;  
  15.     }  
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.     public String getPassword() {  
  20.         return password;  
  21.     }  
  22.     public void setPassword(String password) {  
  23.         this.password = password;  
  24.     }  
  25.   
  26. }  


4、测试调用:

[java] view plain copy
 
  1. package com.common.page;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.PreparedStatement;  
  5. import java.sql.ResultSet;  
  6. import java.sql.SQLException;  
  7. import java.util.ArrayList;  
  8. import java.util.List;  
  9.   
  10. import com.common.db.DbUtil;  
  11.   
  12. public class Client {  
  13.     public static PageModel findAdmins(int pageNo,int pageSize){  
  14.         Connection conn=DbUtil.getConnection();  
  15.         String sql="select * from admin limit ?,?";  
  16.         PageModel pageModel=null;  
  17.         PreparedStatement pstm=null;  
  18.         ResultSet rs=null;  
  19.         Admin admin=null;  
  20.         List<Admin> list=new ArrayList<Admin>();  
  21.         try {  
  22.             pstm=conn.prepareStatement(sql);  
  23.             pstm.setInt(1, (pageNo-1)*pageSize);  
  24.             pstm.setInt(2, pageNo*pageSize);  
  25.             rs=pstm.executeQuery();;  
  26.             while(rs.next()){  
  27.                 admin=new Admin();  
  28.                 admin.setId(rs.getInt("a_id"));  
  29.                 admin.setName(rs.getString("a_name"));  
  30.                 admin.setPassword(rs.getString("a_pwd"));  
  31.                 list.add(admin);  
  32.             }  
  33.             ResultSet rs2=pstm.executeQuery("select count(*) from admin");  
  34.             int total=0;  
  35.             if(rs2.next()){  
  36.                 total=rs2.getInt(1);  
  37.             }  
  38.             pageModel=new PageModel();  
  39.             pageModel.setPageNo(pageNo);  
  40.             pageModel.setPageSize(pageSize);  
  41.             pageModel.setTotalRecords(total);  
  42.             pageModel.setList(list);  
  43.         } catch (SQLException e) {  
  44.             e.printStackTrace();  
  45.         }finally{  
  46.             DbUtil.close(conn);  
  47.             DbUtil.close(pstm);  
  48.             DbUtil.close(rs);  
  49.         }  
  50.         return pageModel;  
  51.     }  
  52.       
  53.     public static void main(String[] args) {  
  54.         PageModel pageModel=Client.findAdmins(2,4);  
  55.         List<Admin> list=pageModel.getList();  
  56.         for(Admin a:list){  
  57.             System.out.print("ID:"+a.getId()+",用户名:"+a.getName()+",密码:"+a.getPassword());  
  58.             System.out.println();  
  59.         }  
  60.         System.out.print("当前页:"+pageModel.getPageNo()+" ");  
  61.         System.out.print("共"+pageModel.getTotalPages()+"页  ");  
  62.         System.out.print("首页:"+pageModel.getTopPageNo()+" ");  
  63.         System.out.print("上一页:"+pageModel.getPreviousPageNo()+" ");  
  64.         System.out.print("下一页:"+pageModel.getNextPageNo()+" ");  
  65.         System.out.print("尾页:"+pageModel.getBottomPageNo()+" ");  
  66.         System.out.print("共"+pageModel.getTotalRecords()+"条记录");  
  67.         System.out.println();  
  68.     }  
  69.   
  70. }  


这样分页效果就实现了,我们要实现分页效果,只要传入相应的参数和相应的数据库执行语句即可实现,希望大家能灵活运用。

原文地址:https://www.cnblogs.com/grimm/p/6737198.html