zoukankan      html  css  js  c++  java
  • java 关于分页的实现

       关于java实现分页

    转自:http://www.cnblogs.com/slliang/archive/2012/08/22/2651053.html

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

    package com.student.util;
    import java.util.List;
    
    import com.student.entity.Person;
    
    /**
     * 封装分页信息
     * @author Administrator
     *
     * @param <Person>
     */
    public class PageModel<E> {
    
        //结果集
        private List<E> list;
        
        //查询记录数
        private int totalRecords;
        
        //第几页
        private int pageNo;
        
        //每页多少条记录
        private int pageSize;
        
        //总页数
        public int getTotalPages(){
            return (totalRecords + pageSize -1)/pageSize;
        }
        
        //首页
        public int getTopPage(){
            return 1;
        }
        
        //上一页
        public int getPreviousPage(){
            if(pageNo<=1){
                return 1;
            }
            return pageNo-1;
        }
        //下一页
        public int getNextPage(){
            if(pageNo>=getBottomPage()){
                return getBottomPage();
            }
            return pageNo+1;
        }
        
        //尾页
        public int getBottomPage(){
            return getTotalPages();
        }
        
        public List<E> getList() {
            return list;
        }
        public void setList(List<E> list) {
            this.list = list;
        }
        public int getTotalRecords() {
            return totalRecords;
        }
        public void setTotalRecords(int totalRecords) {
            this.totalRecords = totalRecords;
        }
        public int getPageNo() {
            return pageNo;
        }
        public void setPageNo(int pageNo) {
            this.pageNo = pageNo;
        }
        public int getPageSize() {
            return pageSize;
        }
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
    }
    

      2.测试类

    public class PageModelTest{
        public static void main(String[] args){
            int pageNo=1;
            int pageSize=10;
            findUserList(pageNo,pageSize);
        }
        /**
         * 分页查询
         * @param pageNo 第几页
         * @param pageSize 每页多少条记录
         * @return PageModel<E>
         */
        public PageModel<Person> findUserList(int pageNo,int pageSize){
            PageModel<Person> pageModel = null;
            Connection conn = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            //各数据库的分页语句不一样
            
            /*oracle实现分页,三层嵌套,这里10应该为pageNo*pageSize ,0为(pageNo-1)*pageSize
            String sql="
            select column1,column2,column3,column4,column5 from    
                 (select rownum rn,column1,column2,column3,column4,column5 from
                     (select column1,column2,column3,column4,column5 from table_name order by column desc)
                 where rownum<=10)
             where rn>0";
            */
            //mysql实现分页
            String sql="select * from person order by id desc limit ?,? "; 
            conn=DBUtil.getUtil().getConnection();
            try {
                ps=conn.prepareStatement(sql);
                ps.setInt(1, (pageNo-1) * pageSize);
                ps.setInt(2, pageSize);
                rs=ps.executeQuery();
                List<Person> personList  = new ArrayList<Person>();
                while(rs.next()){
                    Person person=new Person();
                    person.setName(rs.getString("stu_name"));
                    person.setPassword(rs.getString("stu_psw"));
                    person.setNumber(rs.getString("stu_number"));
                    person.setBirthday(rs.getDate("stu_birth"));
                    person.setSex(rs.getInt("stu_sex"));
                    person.setPolity(rs.getInt("stu_polity"));
                    person.setBrief(rs.getString("stu_brief"));
                    person.setType(rs.getInt("type"));
                    person.setState(rs.getInt("state"));
                    personList.add(person);
                }
                pageModel = new PageModel<Person>();
                pageModel.setList(personList);
                pageModel.setTotalRecords(getTotalRecords(conn));
                pageModel.setPageSize(pageSize);
                pageModel.setPageNo(pageNo);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    if(rs!=null){
                        rs.close();
                    }
                    if(ps!=null){
                        ps.close();
                    }
                    if(conn!=null){
                        conn.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return pageModel;
        }
        /**
         * 得到总记录数,私有方法,外部无法访问,本类中使用
         * @param conn
         * @return
         */
        private int getTotalRecords(Connection conn){
            PreparedStatement ps = null;
            ResultSet rs = null;
    
            String sql="select count(*) from person"; 
            
            conn=DBUtil.getUtil().getConnection();
            int count=0;
            try {
                
                ps=conn.prepareStatement(sql);
                rs=ps.executeQuery();
                while(rs.next()){
                    //此时根据sql语句查出的只有一列,否则不建议用int标识字段
                    count = rs.getInt(1);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                try {
                    if(rs!=null){
                        rs.close();
                    }
                    if(ps!=null){
                        ps.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return count;
        }
    }
  • 相关阅读:
    Python 字符串(一)
    UVA 11552 四 Fewest Flops
    UVA 10534 三 Wavio Sequence
    UVA 1424 二 Salesmen
    UVA 11584 一 Partitioning by Palindromes
    CodeForces 549G Happy Line
    CodeForces 451C Predict Outcome of the Game
    CodeForces 567C Geometric Progression
    CodeForces 527B Error Correct System
    CodeForces 552C Vanya and Scales
  • 原文地址:https://www.cnblogs.com/xiaow/p/4573852.html
Copyright © 2011-2022 走看看