给你网站你会怎么做的/快优吧seo优化
spring boot 中 JpaRepository 与 PageHealper分页小坑
废话:
事情是这样的,跟着教程做了springboot分页,分页失败!下载了教学代码运行确可以,对比了自己代码的pom.xml、controller.java、PageHelperConfig.java等文件,但是还是没发现有啥问题。
问题发现:
最后突发奇想,例子里用的是Mapper注释的方式查找数据库,而我用的是JpaRepository,是不是JpaRepository的findAll()方法有问题。事实证明问题就是JpaRepository的findAll方法出问题
解决方法:
不要用JpaRepository来搜索数据库,改用Mapper注释的方法
最后附上相关代码(部分):
Mapper的findAll()方法(问题所在,错误的findAll()方法是继承JpaRepository)
@Mapper
public interface findDao {@Select("select * from users ")List<user> findAll();
}
controller.java
@RequestMapping("/userlist")
public String userlist(Model m,@RequestParam(value = "start", defaultValue = "1") int start,@RequestParam(value = "size", defaultValue = "5") int size) throws Exception {PageHelper.startPage(start,size,"id desc");List<user> list=findDao.findAll();PageInfo<user> page = new PageInfo<>(list);m.addAttribute("page", page);return "userlist";
}
PageHelperConfig.java
import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Properties;@Configuration
public class PageHelperConfig {@Beanpublic PageHelper pageHelper() {PageHelper pageHelper = new PageHelper();Properties p = new Properties();p.setProperty("offsetAsPageNum", "true");p.setProperty("rowBoundsWithCount", "true");p.setProperty("reasonable", "true");pageHelper.setProperties(p);return pageHelper;}
}
pom.xml
<!-- pageHelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.1.6</version>
</dependency>