1. 程式人生 > 實用技巧 >分頁查詢案例

分頁查詢案例

分頁查詢案例

1、實體類

1.1、頁面實體類

package com.yl.bean;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 圖書頁面實體類
 */
@Data
@NoArgsConstructor
public class PageBook {
    private int pageCode;//當前頁碼
    private int pageSize;//每頁資料條數
    private int totalPage;//總頁數
    private int totalRecord;//總資料條數
    private List<Book> bookList;//用來儲存查詢出來的結果集
}

1.2、圖書實體類

package com.yl.bean;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 圖書實體類
 */
@Data
@NoArgsConstructor
public class Book implements Serializable {
    private Integer id;
    private String name;
    private String author;
    private Date date;
    private Float price;
}

2、業務層

2.1、業務層介面

package com.yl.service;

import com.yl.bean.Book;
import com.yl.bean.PageBook;

import java.util.List;

/**
 * 圖書業務層介面
 */
public interface IBookService {

    /**
     * 分頁查詢
     */
    PageBook queryByPage(int pageCode,int pageSize);

}

2.2、業務層介面實現類

package com.yl.service.impl;

import com.yl.bean.Book;
import com.yl.bean.PageBook;
import com.yl.dao.IBookDao;
import com.yl.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 圖書業務層介面實現類
 */
@Service("bookService")
public class IBookServiceImpl implements IBookService {
    @Autowired
    private IBookDao bookDao;

    /**
     * 分頁查詢
     */
    @Override
    public PageBook queryByPage(int pageCode,int pageSize) {
        PageBook pageBook=new PageBook();

        //查詢起始位置
        int start=(pageCode-1)*pageSize;
        //每次查詢的資料條數
        int ps=pageSize;
        //呼叫持久層分頁查詢方法
        List<Book> bookList=bookDao.queryByPage(start,ps);
        //查詢資料庫圖書總數量
        int bookCount=bookDao.queryDataCount();
        //計算總頁數
        int pageCount=bookCount%ps==0?bookCount/ps:bookCount/ps+1;

        pageBook.setBookList(bookList);
        pageBook.setPageCode(pageCode);
        pageBook.setTotalPage(pageCount);
        pageBook.setPageSize(pageSize);

        return pageBook;
    }

}

3、持久層

3.1、持久層介面

package com.yl.dao;

import com.yl.bean.Book;
import com.yl.bean.PageBook;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 圖書持久層介面
 */
public interface IBookDao {

    /**
     * 分頁查詢
     */
     List<Book> queryByPage(@Param("pageCode") int pageCode, @Param("pageSize") int pageSize);

    /**
     * 查詢資料庫表中圖書總量
     */
    int queryDataCount();

}