業(yè)務(wù)場(chǎng)景
我們知道在使用PageHelper分頁(yè)插件時(shí)澎埠,會(huì)對(duì)執(zhí)行PageHelper.startPage(pageNum, pageSize);
方法后的第一條查詢(xún)語(yǔ)句進(jìn)行分頁(yè)操作拌夏。在開(kāi)發(fā)中總會(huì)遇到這樣的業(yè)務(wù)情景,在進(jìn)行分頁(yè)查詢(xún)后丁侄,需要對(duì)獲得的列表數(shù)據(jù)包裝成另一種類(lèi)型茄菊,此時(shí)需要對(duì)新類(lèi)型的列表進(jìn)行分頁(yè)缘眶,然而由于PageInfo<T>
因?yàn)榉盒偷脑蚝采啵瑢?dǎo)致處理后的列表不能加入到該類(lèi)中。
如唤锉,我在數(shù)據(jù)庫(kù)分頁(yè)后查詢(xún)到的類(lèi)為PageInfo<User>
世囊,此時(shí)改類(lèi)中的list
屬性為User,在當(dāng)前的業(yè)務(wù)場(chǎng)景下窿祥,我需要將User類(lèi)型替換為UserVo類(lèi)型株憾。
當(dāng)我們對(duì)list屬性進(jìn)行操作時(shí),會(huì)同時(shí)導(dǎo)致PageInfo類(lèi)中的其他屬性發(fā)生改變晒衩,如total等嗤瞎。
解決方法
//從數(shù)據(jù)庫(kù)獲得的Users分頁(yè)列表
//當(dāng)我們打印users時(shí),會(huì)發(fā)現(xiàn)打印出來(lái)的數(shù)據(jù)除了列表數(shù)據(jù)還有分頁(yè)屬性
List<User> users = this.list();
//操作users獲得的需要的列表
List<UserVo> userVos = this.list2(users);
//創(chuàng)建User的info類(lèi)听系,此時(shí)page中的屬性已生成
PageInfo<User> userPage = new PageInfo<>(users);
//創(chuàng)建UserVo的info類(lèi)
PageInfo<UserVo> userVoPage= new PageInfo<>(userVos );
//將userPage中除看list外的其他屬性復(fù)制到userVoPage中
PageInfoUtil pageInfoUtil = new PageInfoUtil();
pageInfo = pageInfoUtil.getPageVo(userPage ,userVoPage);
pageInfoUtil
public class PageInfoUtil {
public PageInfo getPageVo(PageInfo pageInfoPo,PageInfo pageInfoVo){
pageInfoVo.setTotal(pageInfoPo.getTotal());
pageInfoVo.setEndRow(pageInfoPo.getEndRow());
pageInfoVo.setHasNextPage(pageInfoPo.isHasNextPage());
pageInfoVo.setHasPreviousPage(pageInfoPo.isHasPreviousPage());
pageInfoVo.setIsFirstPage(pageInfoPo.isIsFirstPage());
pageInfoVo.setIsLastPage(pageInfoPo.isIsLastPage());
pageInfoVo.setNavigateFirstPage(pageInfoPo.getNavigateFirstPage());
pageInfoVo.setNavigateLastPage(pageInfoPo.getNavigateLastPage());
pageInfoVo.setNavigatePages(pageInfoPo.getNavigatePages());
pageInfoVo.setNavigatepageNums(pageInfoPo.getNavigatepageNums());
pageInfoVo.setNextPage(pageInfoPo.getNextPage());
pageInfoVo.setPageNum(pageInfoPo.getPageNum());
pageInfoVo.setPages(pageInfoPo.getPages());
pageInfoVo.setPageSize(pageInfoPo.getPageSize());
pageInfoVo.setPrePage(pageInfoPo.getPrePage());
pageInfoVo.setSize(pageInfoPo.getSize());
pageInfoVo.setStartRow(pageInfoPo.getStartRow());
pageInfoVo.setFirstPage(pageInfoPo.getFirstPage());
pageInfoVo.setLastPage(pageInfoPo.getLastPage());
return pageInfoVo;
}
}
End
想使用秀一點(diǎn)的方法贝奇,結(jié)果能力有限,沒(méi)有成功靠胜,只能使用這種笨方法弃秆,如果有更好的方法届惋,歡迎各位指導(dǎo)髓帽。