MySQL、Oracle分頁查詢

來源:互聯網
上載者:User

標籤:sys   需要   print   ring   sele   mysq   分頁sql   mys   ppi   

  1. mysql分頁   
  2.  需用到的參數:   
  3.  pageSize 每頁顯示多少條資料   
  4.  pageNumber 頁數 從用戶端傳來   
  5.  totalRecouds 表中的總記錄數 select count (*) from 表名   
  6.  totalPages 總頁數   
  7.  totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1   
  8.  pages 起始位置   
  9.  pages= pageSize*(pageNumber-1)   
  10.  SQL語句:   
  11.  select * from 表名 limit pages, pageSize;   
  12.  mysql 分頁依賴於關鍵字 limit 它需兩個參數:起始位置和pageSize   
  13.  起始位置=頁大小*(頁數-1)   
  14.  起始位置=pageSize*(pageNumber -1)
  15. 一:分頁需求:

    用戶端通過傳遞start(頁碼),limit(每頁顯示的條數)兩個參數去分頁查詢資料庫表中的資料,那我們知道MySql資料庫提供了分頁的函數limit m,n,但是該函數的用法和我們的需求不一樣,所以就需要我們根據實際情況去改寫適合我們自己的分頁語句,具體的分析如下:

    比如:

    查詢第1條到第10條的資料的sql是:select * from table limit 0,10;   ->對應我們的需求就是查詢第一頁的資料:select * from table limit (1-1)*10,10;

    查詢第10條到第20條的資料的sql是:select * from table limit 10,20;  ->對應我們的需求就是查詢第二頁的資料:select * from table limit (2-1)*10,10;

    查詢第20條到第30條的資料的sql是:select * from table limit 20,30;  ->對應我們的需求就是查詢第三頁的資料:select * from table limit (3-1)*10,10;

    二:通過上面的分析,可以得出符合我們自己需求的分頁sql格式是:select * from table limit (start-1)*limit,limit; 其中start是頁碼,limit是每頁顯示的條數。

    1. oracle分頁  
    2.  pageSize 每頁顯示多少條資料   
    3.  pageNumber 頁數 從用戶端傳來   
    4.  totalRecouds 表中的總記錄數 select count (*) from 表名   
    5.  totalPages 總頁數   
    6.  totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1   
    7.  startPage 起始位置   
    8.  startPage= pageSize*(pageNumber-1)+1  
    9.  endPage=startPage+pageSize  
    10.  SQL語句  
    11.  select a.* from   
    12.  (  
    13.    select rownum num ,t.* from  表名 t where 某列=某值 order by id asc   
    14.  )a  
    15.  where a.num>=startPage and a.num<endPage  
      1. select t2.* from (
        select t1.*,rownum rn from (
        select employee_id,emp_name,email,phone_number,hire_date,j.job_title,
        salary,d.department_name from employeess e
        left join jobss j on e.job_id=j.job_id
        left join departmentss d on e.department_id=d.department_id
        ) t1 where rownum &lt;= #{up}
        ) t2 where rn &gt; #{down}
      2. Mapper:List<Employees> findByPageNo(@Param("up") int up, @Param("down") int down);
      3. Dao:
        public List<Employees> findByPageNo(int pageNo, int pageNum) {
        int up=pageNo*pageNum;
        int down=(pageNo-1)*pageNum;
        return employeeMapper.findByPageNo(up,down);
        }
      4. Service:
        public List<Employees> findByPageNo(int pageNo, int pageNum) {
        return employeeDao.findByPageNo(pageNo,pageNum);
        }
      5. Controller
        @RequestMapping("employeelist.do")
        public String list(int pageNo, Model model) {
        //每頁數量
        int pageNum = 3;
        //總數量
        int count = employeeService.findMaxSize();
        //總頁數
        int pageMax = count % pageNum == 0 ? count / pageNum : count / pageNum + 1;

        System.out.println("list---------");
        //頁數判斷
        if (pageNo < 1) {
        pageNo = 1;
        }
        if (pageNo > pageMax) {
        pageNo = pageMax;
        }

        List<Employees> all = employeeService.findByPageNo(pageNo, pageNum);
        //將結果返回給頁面顯示
        model.addAttribute("employeelist", all);
        model.addAttribute("pageNo", pageNo);
        model.addAttribute("pageMax", pageMax);


        return "employeelist";
        }
       

MySQL、Oracle分頁查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.