今天忙活了一下午,一直在弄这个东西。
public String turnPage(Model model, @RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum){
PageHelper.startPage(pageNum,5);
List<BuyFood> userList = stuService.findAll();
PageInfo<BuyFood> pageInfo = new PageInfo<>(userList);
pageInfo.setPageSize(5);
model.addAttribute("pageInfo", pageInfo);
return "show";
}
如图所示,这个分页逻辑应该是没有问题。但是由于List<BuyFood> userList = stuService.findAll();是利用spring Data JPA实现的,so一直不能分页,脑阔疼。
开始自己还憨楚楚的检查着,检查那。最后突发灵感是不是spring Data JPA和pageHelper杠上了。最后发现人家spring Data JPA有自己的分页方法嘛。那怎么可能轻易支出别人来分页呢?就像娶媳妇一样,什么媒婆,彩礼都让你弄好了,最后入洞房了。哎,没你啥事了,这谁会干?
但是事情无绝对,可以用但是非常麻烦,小生也不在这班门弄斧了,就告诉大伙一声,还是自己的媳妇自己入洞房吧,别去搞那些费力不讨好的事了。
下面来说说JPA咋个分页:
首先,因为麻烦,所以不能用spring Data JPA查询了,但是并不代表我们不需要使用它,知识在分页的时候不适用。并且spring Data JPA的自带分页pageable不能针对全部查询结果列表进行分页,是按照查询对象进行分页,不是很好用。所以实际应用上也不是很方便。
所以遇到分页,service层可以用mybatis,当然一种可以用xml文件,另一种是原生sql语句。查询后然后分页就行了,查询不是很复杂或者查询次数多的话,建议使用原生sql语句类似于这样的:
@Select("select * from buy_food") List<BuyFood> findAll();
当然,自己写分页是最好不过了,写一次就留着吧。等我哪天有时间写一个发出来,哈哈。当然,本文出自技术小白,有大神路过恳请指正和指导。