准入...
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的注解
以上配置则可以使用了,谢谢!
闪出... ...