SpringBoot2.1+MybatisPlus+Pagehelper框架整合(其中与Dubbo整合时分页失效的疑问与解决)

13 篇文章 0 订阅
5 篇文章 0 订阅

准入...

sb-mybatisplus-pagehelper-demo 本人写了一个使用SpringBoot2.1版本与MybatiPlus+PageHelper工具整合的一个Demo示例,可以gh下载看下;

该工程的配置比较简单,里面有自己的一些分页的封装,可以参考Demo直接使用;

不过本文主要说的不是这个,主要是说本人发现的一个疑问,如果有知道原因的请在下面给出解决办法或思路,谢谢;

问题:在上述工程中加入Dubbo分布式后,PageHelper的分页作用失效了,Service层的代码没有变动,现在贴出Controller层的代码

@RestController
@RequestMapping("/test")
public class TestController extends BaseController {

	@Reference
	private UserService userService;

	@RequestMapping(value="/say", method=RequestMethod.GET)
	public JSONResponse say() {

		QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
		//wrapper.eq("user_id", "1");

		System.out.println("--------------------");
		PageHelper.startPage(1, 4);
		List<SysUser> list = userService.list(wrapper);
		System.out.println(JSON.toJSON(list));

		PageInfo<SysUser> pageInfo = new PageInfo<SysUser>(list);
		
		Page page = PageUtils.getPage(list);
		System.out.println("page: " + page);
		System.out.println("--------------------");
		
		
		System.out.println("--------------------");
		userService.queryPage(1, 4, wrapper);
		System.out.println("--------------------");

		return successed(list, page);
	}

其中上面输出的list集合是全集,也就是说分页效果没有达到,我没有去仔细翻源码,如果有遇到该问题的,请给出思路,谢谢!

下面说出本人的解决方法,主要思路是在使用上由controller层转到了service层,下面给出示例:

public interface SuperService<T> extends IService<T>{
	
	/**
	 * 分页查询 返回 PageInfo 信息 由获取者根据该返回内容自由获取该对象的值 
	 * @param pageNum 查询第几页
	 * @param pageSize 每页显示几条
	 * @param wrapper Mybatisplus查询条件设置
	 * @return
	 */
	PageInfo<T> queryPage(int pageNum,int pageSize, Wrapper<T> wrapper);
}




public class SuperServiceImpl<Mapper extends SuperMapper<T>, T> extends ServiceImpl<Mapper, T> implements SuperService<T> {

	@Autowired
	private Mapper mapper; // 注意 此处为各模块自己实现的 *Mapper接口
	
	@Override
	public PageInfo<T> queryPage(int pageNum, int pageSize, Wrapper<T> wrapper) {
		pageNum = pageNum <= 0 ? 1 : pageNum; // 如果未设置查询页数 则默认返回第1页
		pageSize = pageSize <= 0 ? 10 : pageSize; // 如果未设置每天显示条数 则默认10条
		PageHelper.startPage(pageNum, pageSize);

		List<T> list = mapper.selectList(wrapper);
		return new PageInfo<>(list);
	}

}

如上述配置,在Controller层使用时,示例:

	@Reference
	private UserService userService;

	@RequestMapping(value="/say", method=RequestMethod.GET)
	public JSONResponse say() {

		QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
		//wrapper.eq("user_id", "1");

		PageInfo<SysUser> pageInfo = userService.queryPage(1, 4, wrapper);
		Page page = PageUtils.getPage(pageInfo);

		return successed(pageInfo.getList(), page);
	}

其中 @Reference是Dubbo的注解

以上配置则可以使用了,谢谢!

闪出... ...

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值