W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
分頁(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)框架決定的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: