標籤:sys 需要 print ring sele mysq 分頁sql mys ppi
- mysql分頁
- 需用到的參數:
- pageSize 每頁顯示多少條資料
- pageNumber 頁數 從用戶端傳來
- totalRecouds 表中的總記錄數 select count (*) from 表名
- totalPages 總頁數
- totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
- pages 起始位置
- pages= pageSize*(pageNumber-1)
- SQL語句:
- select * from 表名 limit pages, pageSize;
- mysql 分頁依賴於關鍵字 limit 它需兩個參數:起始位置和pageSize
- 起始位置=頁大小*(頁數-1)
- 起始位置=pageSize*(pageNumber -1)
一:分頁需求:
用戶端通過傳遞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是每頁顯示的條數。
-
- oracle分頁
- pageSize 每頁顯示多少條資料
- pageNumber 頁數 從用戶端傳來
- totalRecouds 表中的總記錄數 select count (*) from 表名
- totalPages 總頁數
- totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
- startPage 起始位置
- startPage= pageSize*(pageNumber-1)+1
- endPage=startPage+pageSize
- SQL語句
- select a.* from
- (
- select rownum num ,t.* from 表名 t where 某列=某值 order by id asc
- )a
- where a.num>=startPage and a.num<endPage
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 <= #{up}
) t2 where rn > #{down}
Mapper:List<Employees> findByPageNo(@Param("up") int up, @Param("down") int down);
- Dao:
public List<Employees> findByPageNo(int pageNo, int pageNum) {
int up=pageNo*pageNum;
int down=(pageNo-1)*pageNum;
return employeeMapper.findByPageNo(up,down);
}
- Service:
public List<Employees> findByPageNo(int pageNo, int pageNum) {
return employeeDao.findByPageNo(pageNo,pageNum);
}
- 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分頁查詢