一、问题描述
用 若依框架 进行分页查询,表中数据有 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;
}