分頁使用到的Page類

SELECT *  FROM student LIMIT FROM,TO

分頁無非就是實現了上面這個SQL語句,首先獲取查詢條件,然後獲得limit這裏的From和To的值不就結束了
在數據庫中做分頁查詢的時候,我們要想知道獲取數據的起始位置和結束位置,就要知道每頁顯示的數據個數,我們可以根據數據總個數和每頁顯示的數據個數算出來總頁數。

Page類

public class PageBean<T> (){

    // 1.當前頁數 從頁面獲取
    private int currentPage;
    // 2.每頁顯示數據個數,賦初值或者setter獲取
    private int currentCount;
    // 3.總條數,從數據庫獲取
    private int totalRecord;
    // 4.總頁數,計算得到
    private int totalPage;
    // 5.每頁的顯示數據,數據庫得到
    List<T> list = new ArrayList<>();

    getter()和setter()方法
}

SearchRequest類

public class SearchRequest {

    private Integer From;
    private Integer pageSize;
    //.....其他查詢條件
    private String name;
    private String age;

    getter()和setter()方法
    }

Controller層

    @RequestMapping(value = "/Page.action")
    public @ResponseBody PageBean<> SearchRecordPage(SearchRequest searchRequest,PageBean pageBean) {
        //
        int totalRecord=service.getPageSize(searchRequest);     
        pageBean.setTotalRecord(totalRecord);
        pageBean.setTotalPage((int) Math.ceil((pageBean.getTotalRecord()*1.0)/pageBean.getCurrentCount()));

        //獲取當前點擊頁面的數據(pageBean前臺傳錯來一個頁面顯示多少條,和頁碼數)
        List<> list = service.getRecord(searchRequest,pageBean);    
        //返回前臺數據
        pageBean.setList(list);
        return pageBean;

    }

Service的書寫


    public List<T> getRecord(SearchRequest searchRequest, PageBean<ResultClassName> pageBean) {
        //數據庫進行分頁的方法searchrequest加入from 和to
        //當前頁面
        int currentPage=pageBean.getCurrentPage();  
        //頁面的顯示個數
        int currentCount=pageBean.getCurrentCount();
        //根據頁面算出數據庫查詢的起始位置
        int from=currentCount*(currentPage-1);
        //獲取的數據個數
        int pageSize=currentCount;
        //將查詢範圍在查詢條件裏
        searchRequest.setFrom(From);
        searchRequest.setPageSize(pageSize);
        //根據以上條件返回目的對象
        pageBean.setList( Mapper.getRecord(searchRequest));
        return pageBean;    
    }

Sql的寫法

    <select id="getRepairRecord" resultType="ResultClassName"
        parameterType="SearchRequest">
        SELECT *
        FROM 表名
        <where>
            <if test="name!=null and name!=''">
                and name=#{name}</if>
            <if test="age!=null and age!=''">
                and age=#{age}
            </if>
        </where>
         <if test="From!=null  and pageSize!=null">
            limit #{From},#{pageSize}
         </if>
    </select>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章