分页高级查询步骤

来源:互联网 发布:600831广电网络 编辑:程序博客网 时间:2024/05/16 14:25

1.定义bean类

   public class User {

         private String name;

         private String password;

         private String sex;

         private int age;

         //set get 方法,此处省略不写

   }

2.定义用于记录页面数据的分页工具:PageBean类

   public class PageBean {

         private int pageSize;//页面大小

         private int pageNo;//页码

         private int totalData;//未分页前的总数据量

         private List<User> list;//用于存储查询结果,可以定义泛型,这样一 个PageBean 类可以为多个bean类使用

         //set get 方法,此处省略不写

       

        //获取总页数
         public int getTotalPages() {
               return (totalData + pageSize - 1) / pageSize;
         }

         //获取上一页
         public int getPrePage() {
               if(pageNo == 1)
                     return 1;
               else
                     return pageNo - 1;
         }

         //获取下一页
         public int getNextPage() {
               if(pageNo == this.getLastPage())
                     return this.getLastPage();
               else
                     return pageNo + 1;
         }

         //获取第一页
         public int getFirstPage(){
               return 1;
         }

         //获取最后一页
         public int getLastPage(){
               if(this.getTotalPages() == 0)
                     return 1;
               else
                     return this.getTotalPages();
         }

   }

3.编写dao的实现类

   //分页查询

   public List<User> pagingGet(int pageNo, int pageSize,User user){

         //用于查询数据的sql语句,如果要根据条件查询,应先查询符合条件的结果并编号再分页

         String sql = "select temp.* from(select u.*,rownum num from user u where";


         //获取页面大小和当前页码
          int startNo = pageSize * (pageNo - 1) + 1;
          int endNo = startNo + pageSize - 1;


         //根据条件查询  

          if(user.getName() != null && !"".equals(user.getName()){

          sql = sql + " name like '%" + user.getName() +"%' and";

          }

          if(user.getSex() != null && !"".equals(user.getSex()){

           sql = sql + " sex = " + user.getSex() +" and";

          }

          if(user.getAge() != null && !"".equals(user.getAge()){

           sql = sql + " age = " + user.getAge() +" and";

          }

         sql = sql + "  temp.num between "+startNo+" and "+endNo;

         //sql执行语法,此处省略不写,可根据所掌握的知识自行编写

   }


   //符合查询条件的未分页前的总数据量

   public int getTotalRecords(User user){

         //用于查询数据的sql语句,如果要根据条件查询,应先查询符合条件的结果并编号再分页

         String sql = "select count(*) from user where";


         //根据条件查询  

 if(user.getName() != null && !"".equals(user.getName()){

           sql = sql + " name like '%" + user.getName() +"%' and";

         }

 if(user.getSex() != null && !"".equals(user.getSex()){

           sql = sql + " sex = " + user.getSex() +" and";

         }

 if(user.getAge() != null && !"".equals(user.getAge()){

           sql = sql + " age = " + user.getAge() +" and";

         }

         sql = sql + "  1=1";

         //sql执行语法,此处省略不写,可根据所掌握的知识自行编写

   }


4.编写业务层的实现类

   private UserDao userDao = new UserDaoImpl();

   public PageBean pagingQuery(int pageNo, int pageSize,User user){

         List<User> list = userDao.pagingGet(pageNo, pageSize, user);//查询符合条件的结果

         int totalRecords = userDao.getTotalRecords;//获取未分页前的总数据量


         PageBean pb = new PageBean();

         pb.setList(list);//查询结果

         pb.setPageNo(pageNo);//页码

         pb.setPageSize(pageSize);//页大小

         pb.setTotalData(totalRecords);//未分页前的总数据量


         return pb;

   }

5.调用业务层分页查询方法



原创粉丝点击