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

准入...

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 wrapper = new QueryWrapper<>();
		//wrapper.eq("user_id", "1");

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

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




public class SuperServiceImpl, T> extends ServiceImpl implements SuperService {

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

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

}

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

	@Reference
	private UserService userService;

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

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

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

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

其中 @Reference是Dubbo的注解

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

闪出... ...

 

 

你可能感兴趣的:(SpringBoot,JAVA,Spring家族,MyBatisPlus,PageHelper)