1、startPage()的使用
1》 使用该方法必须在调用sql的紧挨着上面一句,不然分页无效
2》 startPage()方法中自带排序功能,如果sql中也加了order by排序 ,出来的数据会是乱的、错的, 如果想要去掉该方法自带的排序,只需要更改下即可,如图
3》使用该方法,切记要调用分页的方法前面不能有其它sql,不然会造成其它sql使用了分页,而真正要分页的sql没有limit
2,new PageInfo出来的总条数不正确,和list的一致
先上错误代码:
修正后的代码:
原因应该是第一个list才真正记录了查出来的总条数,而重新换取新的list进行接收,该新对象中并不包含分页中的隐藏数据部分,也就造成了获取总条数不正确的问题,但有时实际业务中,我们必须要使用新的list进行接收如何处理呢,往下看
@Override
public PageInfo<EnquiryAccountDto> selectEnquiryAccountList(EnquiryAccount enquiryAccount) {
/** body格式获取分页*/
PageDomain jsonPageDomain = TableSupport.buildJsonPageRequest();
Integer pageNum = jsonPageDomain.getPageNum();
Integer pageSize = jsonPageDomain.getPageSize();
if(pageNum==null || pageSize==null){
throw new RuntimeException("未获取到分页参数值");
}
// 1. 开启分页
PageHelper.startPage(pageNum,pageSize);
// 2. 查询出数据
List<EnquiryAccount> enquiryAccounts = enquiryMapper.selectEnquiryAccountList(enquiryAccount);
// 3. 这一步的作用主要是为了获取分页信息
PageInfo studentDoPageInfo = new PageInfo<>(enquiryAccounts);
List<EnquiryAccountDto> enquiryAccountDtoList = new ArrayList<>();
for (EnquiryAccount enquiryAccount1 : enquiryAccounts) {
EnquiryAccountDto enquiryAccountDto = new EnquiryAccountDto();
BeanUtils.copyProperties(enquiryAccount1, enquiryAccountDto);
enquiryAccountDtoList.add(enquiryAccountDto);
}
// 4.这一步的作用是将封装后的列表放到分页对象中
studentDoPageInfo.setList(enquiryAccountDtoList);
return studentDoPageInfo;
@PreAuthorize("@ss.hasPermi('sell:enquiry:account:query')")
@PostMapping(value = "/get/account/list")
public TableDataInfo getAccountList(@RequestBody EnquiryAccount enquiryAccount) {
startPage();
PageInfo<EnquiryAccountDto> info = enquiryService.selectEnquiryAccountList(enquiryAccount);
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(info.getList());
rspData.setTotal(info.getTotal());
return rspData;
}