1.引入依赖
<!--分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>
2.在yml文件中添加配置
可以省略,这个版本有默认值。
3.示例代码
返回结果处理工具类:
public class PageHelperVoHandler<T> { public PageResult<T> resultHandler(PageInfo<T> pageList, Integer currentPage, Integer pageSize) { try { //总记录数 long total = pageList.getTotal(); //判断:如果查询出来的结果为空,则直接返回null if (total <= 0) { return new PageResult<T>(StatusCode.OK, Msg.SELECTOK, total, new ArrayList<>()); } //总页数 long totalPages = total / pageSize; if (total % pageSize != 0) { totalPages++; } //判断:当前页大于总页数,返回null if (currentPage <= totalPages) { return new PageResult<T>(StatusCode.OK, Msg.SELECTOK, total, pageList.getList()); } else { return new PageResult<T>(StatusCode.OK, "当前页的值不能大于总页数的值:" + totalPages, pageList.getTotal(), null); } } catch (Exception e) { throw new RuntimeException("分页结果处理异常"); } } }
实现类:
@Service @Slf4j @Transactional(rollbackFor = Exception.class) public class ProvinceService { @Autowired private ProvinceMapper provinceMapper; public PageInfo<Province> findPageByCondition(ProvinceQueryCondition queryCondition, int currentPage, int pageSize) { try { log.info("省份管理实现类-条件+分页查询-入参:queryCondition:{},currentPage:{},pageSize:{}", queryCondition, currentPage, pageSize); PageHelper.startPage(currentPage, pageSize); return PageInfo.of(provinceMapper.findPageByCondition(queryCondition)); } catch (Exception e) { log.error(e.getMessage(), e); throw new RuntimeException(); } } }
controller控制层:
@CrossOrigin @RequestMapping("/nide/provinceManage") @Api(tags = "省份管理初级接口") @RestController @Slf4j public class ProvinceController { @Autowired private ProvinceService provinceService; @ApiOperation("条件分页查询省份信息列表") @PostMapping("/findPageByCondition/{currentPage}/{pageSize}") public PageResult<Province> findPageByCondition(@RequestBody ProvinceQueryCondition queryCondition, @PathVariable int currentPage, @PathVariable int pageSize) { log.info("省份管理初级接口-条件分页查询-入参:queryCondition:{},currentPage:{},pageSize{}", queryCondition, currentPage, pageSize); try { PageInfo<Province> provinceList = provinceService.findPageByCondition(queryCondition, currentPage, pageSize); return new PageHelperVoHandler<Province>().resultHandler(provinceList, currentPage, pageSize);//调用上边的工具类 } catch (Exception e) { log.error(e.getMessage(), e); return new PageResult<>(StatusCode.ERROR, Msg.SELECTERROR, 0L, null); } } }