springboot分页小坑(JpaRepository与PageHealper)

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 {

    @Bean
    public 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


<dependency>
  <groupId>com.github.pagehelpergroupId>
  <artifactId>pagehelperartifactId>
  <version>4.1.6version>
dependency>

你可能感兴趣的:(springboot)