关于 Rou-Yi 框架,分页查询数据总数只有10条的问题解决

777 阅读1分钟

一、问题描述

用 若依框架 进行分页查询,表中数据有 28 条,但是每次查询只给我查询 10 条,总数永远只有 10 条,前端分页也显示不出页码。

二、源代码

1. Controller

@PostMapping("/list")
@ResponseBody
public TableDataInfo list(Coupon coupon) {
    startPage();
    List<Coupon> list = couponService.selectCouponList(coupon);
    return getDataTable(list);
}

2.Service

@Override
public List<Coupon> selectCouponList(Coupon coupon) {
    List<Coupon> coupons = couponMapper.selectList(coupon);
    // 数据回显设置
    List<Coupon> collect = coupons.stream().map(c -> {
        if (c.getType().equals(CouponConstants.CouponEnum.COUPON_TYPE_DISCOUNT.getCode())) {
            c.setTypeStr(CouponConstants.CouponEnum.COUPON_TYPE_DISCOUNT.getMsg());
        } else {
            c.setTypeStr(CouponConstants.CouponEnum.COUPON_TYPE_AMOUNT.getMsg());
        }

        if (c.getIsNew().equals(CouponConstants.IsNewEnum.ISNEW_TYPE_COURSE.getCode())) {
            c.setIsNewStr(CouponConstants.IsNewEnum.ISNEW_TYPE_COURSE.getMsg());
        } else {
            c.setIsNewStr(CouponConstants.IsNewEnum.ISNEW_TYPE_CLASS.getMsg());
        }

        if (c.getIsShow().equals(CouponConstants.IsShowEnum.ISSHOW_TYPE_COURSE.getCode())) {
            c.setIsShowStr(CouponConstants.IsShowEnum.ISSHOW_TYPE_COURSE.getMsg());
        } else {
            c.setIsShowStr(CouponConstants.IsShowEnum.ISSHOW_TYPE_CLASS.getMsg());
        }
        return c;
    }).collect(Collectors.toList());
    return coupons;
}

3. Mapper

List<Coupon> selectList(Coupon coupon);

三、解决

Stream回显数据会产生第二个list,导致分页失效,不知道啥原因

解决方式就是在第一个list基础上进行for循环的回显,这样不会产生第二个list,分页就可以正常展示了。

@Override
public List<Coupon> selectCouponList(Coupon coupon) {
    /**
     * 查询条件:
     * 1. 标题
     * 2. 优惠类型
     * 3. 课时课程类型
     */
    // 数据回显设置
    List<Coupon> coupons = couponMapper.selectList(coupon);
    for (Coupon c : coupons) {
        if (c.getType().equals(CouponConstants.CouponEnum.COUPON_TYPE_DISCOUNT.getCode())) {
            c.setTypeStr(CouponConstants.CouponEnum.COUPON_TYPE_DISCOUNT.getMsg());
        } else {
            c.setTypeStr(CouponConstants.CouponEnum.COUPON_TYPE_AMOUNT.getMsg());
        }

        if (c.getIsNew().equals(CouponConstants.IsNewEnum.ISNEW_TYPE_COURSE.getCode())) {
            c.setIsNewStr(CouponConstants.IsNewEnum.ISNEW_TYPE_COURSE.getMsg());
        } else {
            c.setIsNewStr(CouponConstants.IsNewEnum.ISNEW_TYPE_CLASS.getMsg());
        }

        if (c.getIsShow().equals(CouponConstants.IsShowEnum.ISSHOW_TYPE_COURSE.getCode())) {
            c.setIsShowStr(CouponConstants.IsShowEnum.ISSHOW_TYPE_COURSE.getMsg());
        } else {
            c.setIsShowStr(CouponConstants.IsShowEnum.ISSHOW_TYPE_CLASS.getMsg());
        }
    }
    return coupons;
}