从头搭建一个SpringBoot项目,至少应该引入哪些配置?( 三 )

PageVo@Data public class PageVo<T> { /** * 分页数据 */ @ApiModelProperty(value = "http://news.hoteastday.com/a/分页数据") private List<T> records; /** * 总条数 */ @ApiModelProperty(value = "http://news.hoteastday.com/a/总条数") private Integer total; /** * 总页数 */ @ApiModelProperty(value = "http://news.hoteastday.com/a/总页数") private Integer pages; /** * 当前页 */ @ApiModelProperty(value = "http://news.hoteastday.com/a/当前页") private Integer current; /** * 查询数量 */ @ApiModelProperty(value = "http://news.hoteastday.com/a/查询数量") private Integer size; /** * 设置当前页和每页显示的数量 * @param pageForm 分页表单 * @return 返回分页信息 */ @ApiModelProperty(hidden = true) public PageVo<T> setCurrentAndSize(PageForm<?> pageForm){ BeanUtils.copyProperties(pageForm,this); return this; } /** * 设置总记录数 * @param total 总记录数 */ @ApiModelProperty(hidden = true) public void setTotal(Integer total) { this.total = total; this.setPages(this.total % this.size > 0 ? this.total / this.size + 1 : this.total / this.size); } } /** * 获取用户列表 * @param listUserForm 表单数据 * @return 用户列表 */ @Override public PageVo<UserVo> listUser(ListUserForm listUserForm) { PageVo<UserVo> pageVo = new PageVo<UserVo>.setCurrentAndSize(listUserForm); pageVo.setTotal(countUser(listUserForm.getStatus)); pageVo.setRecords(userMapper.listUser(listUserForm.calcCurrent)); return pageVo; } /** * 获取用户数量 * @param status 状态 * @return 用户数量 */ private Integer countUser(String status){ return count(new QueryWrapper<User>.eq("status",status)); } /** * 获取用户列表 * @param listUserForm 表单数据 * @return 用户列表 */ @ApiOperation("获取用户列表") @GetMapping("/listUser") @ApiResponses( @ApiResponse(code = 200, message = "操作成功", response = UserVo.class) ) public ResultVo listUser(@Validated ListUserForm listUserForm){ return ResultVoUtil.success(userService.listUser(listUserForm)); } 注意的点

  • PageVo在实例化的时候需要设置当前页和每页显示的数量 可以调用setCurrentAndSize完成 。
  • 进行分页查询的时候 , 需要计算偏移量 。 listUserForm.calcCurrent
为什么要计算偏移量呢?
  • 假如查询第1页每页显示10条记录 , 前端传递过来的参数是current=1&&size=10 , 这个时候limit 1,10没有问题 。
  • 假如查询第2页每页显示10条记录 , 前端传递过来的参数是current=2&&size=10 , 这个时候limit 2,10就有问题 , 实际应该是limit 10,10 。 calcCurrent的作用就是如此 。
为什么不用MybatisPlus自带的分页插件呢?
自带的分页查询在大量数据下 , 会出现性能问题 。
常用工具类常用工具类可以根据自己的开发习惯引入 。
异常处理异常处理的大致流程主要如下 。