问题描述及解决方案
1、如下配置BaseService分页total总数正常,但是返回的实体为mapper层实体,与需求不一致,因此进行了调整
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import java.util.List; /** * @param <Param> 泛型request * @param <Result> 泛型response */ public interface BaseService<Param, Result> { /** * 分页查询 * * @param param 请求参数DTO * @return 分页集合 */ default PageInfo<Result> page(PageParam<Param> param) { return PageHelper.startPage(param).doSelectPageInfo(() -> list(param.getParam())); } /** * 集合查询 * * @param param 查询参数 * @return 查询响应 */ List<Result> list(Param param); }
2、调整如下后,返回数据类型满足,但是出现了total总数等于每页数量问题
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37/** * @param <Param> 泛型request * @param <Result> 泛型response */ public interface BaseService<Param, Result> { /** * 分页查询 * * @param param 请求参数DTO * @return 分页集合 */ default PageInfo<Result> page(PageParam<Param> param) { PageHelper.startPage(param); List<Result> list = parse(list(param.getParam())); PageInfo<Result> pageInfo = new PageInfo<>(list); return pageInfo; } /** * 集合查询 * * @param param 查询参数 * @return 查询响应 */ List<Result> list(Param param); /** * 补充SO层字段 * * @param mapperResult * @return */ List<Result> parse(Collection mapperResult); }
3、再次进行调整
复制代码
1
2
3
4Page page = PageHelper.startPage(pageNum, pageSize); //使用page的getTotal() int total = page.getTotal();
4、最终的BaseService如下
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39/** * @param <Param> 泛型request * @param <Result> 泛型response */ public interface BaseService<Param, Result> { /** * 分页查询 * * @param param 请求参数DTO * @return 分页集合 */ default PageInfo<Result> page(PageParam<Param> param) { Page page = PageHelper.startPage(param); List<Result> list = parse(list(param.getParam())); long total = page.getTotal();//一定要在获取list之后取total PageInfo<Result> pageInfo = new PageInfo<>(list); pageInfo.setTotal(total); return pageInfo; } /** * 集合查询 * * @param param 查询参数 * @return 查询响应 */ List<Result> list(Param param); /** * 补充SO层字段 * * @param mapperResult * @return */ List<Result> parse(Collection mapperResult); }
5、如果各位大佬还有更好的解决方式,还请留下您宝贵的建议!
最后
以上就是合适饼干最近收集整理的关于Pagehelper获取total错误解决方案的全部内容,更多相关Pagehelper获取total错误解决方案内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复