【05-02】Mybatis-plus分页查询案例【二】

数据访问层(Dao)
@Repository
    public interface LocationDetailDao extends BaseMapper<LocationDetail> {}	
业务层(Service)
ServiceInterface接口
/**
     * @Description: 根据时间区间,分页查询定位信息记录
     * @Author: XiongQiang
     * @Date: 2022/7/15 15:32
     * @Params:
     * @Return:
     */
    JsonBean queryLocationDetailPageBytime(Long starTime,Long endTime,Integer pageNum,Integer pageSize);
	

    /**
     * @Description: 根据用户Id,分页查询定位信息记录
     * @Author: XiongQiang
     * @Date: 2022/7/15 15:35
     * @Params:
     * @Return:
     */
    JsonBean queryLocationDetailPageByUserId(Long userId,Integer pageNum,Integer pageSize);
ServiceImpl实现类
/**
     * @Description: 根据时间区间,分页查询定位信息记录
     * @Author: XiongQiang
     * @Date: 2022/7/15 15:38
     * @Params: Long starTime, Long endTime, Integer currentPageNum, Integer pageSize
     * @Return: JsonBean
     */
    @Override
    public JsonBean queryLocationDetailPageBytime(Long starTime, Long endTime, Integer currentPageNum, Integer pageSize) {
        //可能会出现以下情况:
        //1.如果传递的starTime=endTime=1121212,肯定只能查到time=endTime的数据(pass)
        //2.如果starTime=null,endTime=123434343,理想情况下,可以查询到多条数据,只要time<=endTime即可;(filed,可默认查询0~endTime的数据)
        //3.如果starTime=null=endTime,查询情况为空,可以正常执行查询时间(pass)
        //4.如果starTime=2121212,endTime=null,肯定只能查到time=starTime的数据(filed,可默认查询endTime=startime的数据,最多1条或者0条)
        if (endTime!=null&&starTime==null){
            starTime = 0l;
        }
        if(starTime!=null&&endTime==null){
            endTime = starTime;
        }
        try {
            //1.查询出所有符合时间区间的定位信息
            QueryWrapper<LocationDetail> queryWrapper = new QueryWrapper<>();//条件构造
            queryWrapper.lambda().ge(LocationDetail::getTime, starTime).le(LocationDetail::getTime, endTime);//时间大于等于starTime,小于等于endTime
            //2.分页查询
            Page<LocationDetail> page = new Page<>(currentPageNum, pageSize);
            return JsonBean.create(ResultCode.SERVICE_OK, this.pageSelectVo(page,queryWrapper));
        } catch (Exception e) {
            e.printStackTrace();
            log.error("根据时间分页查询定位信息失败,{}", e.getMessage());
            return JsonBean.create(ResultCode.SERVICE_CODE_ERROR, null);
        }
    }

    /**
     * @Description: 根据用户Id,分页查询定位信息记录
     * @Author: XiongQiang
     * @Date: 2022/7/15 15:39
     * @Params:Long userId, Integer currentPageNum, Integer pageSize
     * @Return:JsonBean
     */
    @Override
    public JsonBean queryLocationDetailPageByUserId(Long userId, Integer currentPageNum, Integer pageSize) {
        //要做一些校验
        //userID!=null
        if (userId==null){
            return JsonBean.create(400,"用户ID输入错误!");
        }
        try {
            //1.根据userId查询用户数据
            QueryWrapper<LocationDetail> queryWrapper = new QueryWrapper<>();
            queryWrapper.lambda().eq(LocationDetail::getUserId, userId);
            //2.分页查询
            Page<LocationDetail> page = new Page<>(currentPageNum, pageSize);
            return JsonBean.create(ResultCode.SERVICE_OK, this.pageSelectVo(page,queryWrapper));
        } catch (Exception e) {
            e.printStackTrace();
            log.error("根据用户ID分页查询定位信息失败,{}", e.getMessage());
            return JsonBean.create(ResultCode.SERVICE_CODE_ERROR, null);
        }
    }

   /**
    * @Description: 分页条件查询并返回结果
    * @Author: XiongQiang
    * @Date: 2022/7/22 13:51
    * @Params:Page page,QueryWrapper queryWrapper
    * @Return:PageSortVo<T>
    */
    public PageSortVo<T> pageSelectVo(Page page,QueryWrapper queryWrapper){
        Page<T> pageResult = baseMapper.selectPage(page, queryWrapper);
        PageSortVo<T> pageSortVo = new PageSortVo<>();
        pageSortVo.setData(pageResult.getRecords());//查询结果
        pageSortVo.setTotal((int)pageResult.getTotal());//数据总量
        pageSortVo.setHasPrev(pageResult.hasPrevious());//是否有上一页
        pageSortVo.setHasNext(pageResult.hasNext());//是否有下一页
        return pageSortVo;
    }
控制层(controller)
    @ApiOperation(value = "根据时间分页查询轨迹记录")
    @GetMapping("/queryPageByTime")
    public JsonBean queryLocationDetailPageBytime(@RequestParam(value = "starTime",required = false) Long starTime,@RequestParam(value = "endTime",required = false)Long endTime, @RequestParam(value = "currentPageNum")Integer currentPageNum,@RequestParam(value = "pageSize")Integer pageSize){
        return locationDetailService.queryLocationDetailPageBytime(starTime, endTime, currentPageNum, pageSize);
    }

    @ApiOperation(value = "根据userId查询轨迹记录" )
    @GetMapping("/queryPageByUserId")
    public JsonBean queryLocationDetailPageByUserId(@RequestParam(value = "userId",required = false) Long userId,@RequestParam(value = "currentPageNum")Integer currentPageNum,@RequestParam(value = "pageSize")Integer pageSize){
        return locationDetailService.queryLocationDetailPageByUserId(userId,currentPageNum,pageSize);
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值