分頁(yè)

2024-03-07 18:38 更新

分頁(yè)功能是很常見的功能,特別是當(dāng)數(shù)據(jù)量越來(lái)越大的時(shí)候,分頁(yè)查詢是必不可少的。 關(guān)于查詢分頁(yè)Java后端的開發(fā)技術(shù)有很多成熟的解決方案,例如如果使用的ORM框架是mybatis的話,有開源的分頁(yè)插件可以使用,如:Mybatis-PageHelper。 在你引入Java后端的查詢分頁(yè)技術(shù)后如何和Dorado的控件結(jié)合就是本文要重點(diǎn)說(shuō)明的。 在dorado的Java端提供了一個(gè)Page對(duì)象輔助前端控件進(jìn)行分頁(yè)處理。

public class Page<T> {
    private int pageSize;//每頁(yè)記錄數(shù)
    private int pageNo;//當(dāng)前要查詢數(shù)據(jù)對(duì)應(yīng)的頁(yè)號(hào)
    private int firstEntityIndex;
    private int lastEntityIndex;


    private Collection<T> entities;//當(dāng)前分頁(yè)查詢出來(lái)的數(shù)據(jù)
    private int entityCount;//本次查詢匹配的總記錄數(shù)(不考慮分頁(yè))
    private int pageCount;

Page對(duì)象的最重要的四個(gè)屬性是: pageSize,pageNo,entities,entityCount Dorado的數(shù)據(jù)查詢是通過前端的Ajax請(qǐng)求觸發(fā)后端的DataProvider方法的,觸發(fā)該方法的時(shí)候,前端會(huì)在ajax請(qǐng)求中注入pageSize和pageNo信息告訴DataProvider

{
    "action":"load-data",
    "dataProvider":"simpleCRUD#getAll",
    "supportsEntity":false,
    "resultDataType":"v:com.bstek.dorado.sample.data.SimpleCRUD$[ProductType]",
    "pageSize":10,
    "pageNo":2
}

而在分頁(yè)查詢情況下Dorado的引擎通過智能方法適配的時(shí)候,會(huì)將pageSize和pageNo信息自動(dòng)封裝為Page對(duì)象,并作為DataProvider方法的參數(shù)傳入:

@DataProvider
public void getAll(Page<Product> page) {
    int pageNo = page.getPageNo();//獲取客戶端傳上來(lái)的pageNo信息
    int pageSize = page.getPageSize();//獲取客戶端傳上來(lái)的pageSize信息
}

在這個(gè)方法中,我們就可以通過page參數(shù)獲取客戶端傳上來(lái)的pageNo和pageSize信息。進(jìn)而調(diào)用自己的業(yè)務(wù)邏輯層或dao層進(jìn)行數(shù)據(jù)查詢。 當(dāng)然查詢的最后結(jié)果是要返回到前臺(tái)的,處理的辦法還是通過Page對(duì)象:

@DataProvider
public void getAll(Page<Product> page) {
    int pageNo = page.getPageNo();
    int pageSize = page.getPageSize();
    PageHelper.startPage(pageNo, pageSize);
    ArrayList<Product> list = productDao.getProductList();
    PageInfo<Product> pageInfo = new PageInfo<Product>(list);
    page.setEntities(list);
    page.setEntityCount(pageInfo.getTotal());
}

上述代碼中的productDao的實(shí)現(xiàn)是一個(gè)示例,采用的PageHelper的寫法,實(shí)際場(chǎng)景要看開發(fā)的項(xiàng)目的分頁(yè)實(shí)現(xiàn)框架決定的。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)