这是自己的第一篇博客,从学校出来已经两个月了,从接触java开始也有近两年了,自己一个学地信的人能够在短时间转方向到开发,并且找到了一份开发的工作还是很满足的。从现在开始,我的博客就用来记录一下自己遇到的问题和解决的方法并分享出来。希望对有遇到相同情况的码友可以有些许帮助。同时也希望自己能够持之以恒坚持下去吧。
首先这是一次在项目中出现的问题,业务找到我说页面中分页失灵了,查出来的数据一股脑的全部显现出来,公司使用的数据库是Oracle,在分页上一般都会使用PageHelper这个分页方法,在检查bug中我发现,上一位编写者并没有写分页相关的代码,于是我将PageHelper运用在了serviceImp中,但是并没有解决这个问题。
if (StringUtils.isNotEmpty(vo.getInstructionNum())) { PageHelper.startPage(page, pageSize);//加入的分页 return this.queryByInstructionNum(iRequest, vo); }
出现这个问题的原因是因为PageHelper适用于一条sql查询的情况,而在项目中,我却遇到的是很多条单表查询后返回的一个list集合,故而PageHelper它失灵了。
于是我找到了另一种分页的方式,使用java8的新特性进行了分页,这样完美的解决了我存在的问题,但是同时,方法的返回值也进行了改变。
public ResponseData MaterialTraceGet(IRequest iRequest, MaterialTraceVO vo, int page, int pageSize) { ResponseData responseData = new ResponseData(); responseData.setSuccess(true); ListmaterialTraceVOList; //逆向追溯 materialTraceVOList= this.materialLotBackwardTraceQuery(iRequest, vo); List newResult = materialTraceVOList.stream().skip(pageSize * (page - 1)).limit(pageSize).collect(Collectors.toList()); //自定义分页 responseData.setRows(newResult); responseData.setTotal(Long.valueOf(materialTraceVOList.size())); return responseData; }
这样完美的解决了PageHelper无法分页的问题