java分页查询总条数_jpa 的findAll,是如何做到调用一次,就把当前页数据和总条数一...

controller:

Page pageData=studentService.findAll(page,limit);

request.setAttribute("stu", pageData);

LayData layData=new LayData();

//保持与layui中的数据表格所需求的json格式保持一致

layData.setCode(0);

layData.setCount(pageData.getTotalElements());——这是总条目

layData.setData(pageData.getContent());——这是分页内容

return layData;

StudentServcieImpl:

private StudentDao studentDao;

public Page findAll(int page, int pageSize) {

PageRequest pageable= PageRequest.of(page,pageSize);

return studentDao.findAll(pageable);

}

StudentDao:

public interface StudentDao extends JpaRepository {

@Query(name = "loginbyId", nativeQuery = true, value =

"select * from student where id=:id and password=:password")

Student loginbyId(@Param("id") Integer id, @Param("password") String password);

}

看了一下jpa源码(org.springframework.data.jpa.repository.support.SimpleJpaRepository类中),也没看懂。我写了个分页查询的sql:

SELECT id,name, address FROM (     SELECT TOP 5 id,name, address FROM     (         SELECT TOP 10 id,name, address         FROM table         ORDER BY id DESC     ) t1     ORDER BY id ) t2 ORDER BY id DESC

(我有26列要显示,表总共有100多列,mssql 的查询语句似乎只能这样写吧?)

我的这个sql只能查到第一页的数据,查不到总条数,难道还要另外写一个查询语句查总条数吗?jpa里一次调用拿到总条数和当前页的记录,是怎么做到的?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JPA中的findAll方法用于查询数据库中的所有记录并返回结果。它的使用方法取决于JPA的版本。在Spring Data JPA 2.x(Spring Boot 2.x)中,可以使用JpaSpecificationExecutor.findAll(Specification,Pageable)方法来支持投影。这个方法接受两个参,一个是查询条件Specification,另一个是分页信息Pageable。通过传入这两个参,可以实现按条件查询并进行分页操作。 在Spring Data JPA 1.x版本中,使用findAll方法也可以进行分页查询,传入一个Pageable参即可实现分页。这个方法会在执行时获取页码和每页记录,并根据这些参计算出limit范围,然后执行相应的查询语句,获取具体的字段数据并返回结果。同时也会执行查询记录的操作,以便获取页记录。 无论是哪个版本的Spring Data JPAfindAll方法最终都会调用PageSimpleJpaRepository中的findAll方法来实现具体的查询操作。这个方法会根据传入的查询条件和分页信息执行相应的查询语句,并返回查询结果。 之,使用JPAfindAll方法可以方便地进行数据查询并支持分页操作,具体的使用方法和参取决于JPA的版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [specification-with-projection:使用Spring Data JPAJpaSpecificationExecutor.findAll(Specification,...](https://download.csdn.net/download/weixin_42130889/18729831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [重写SimpleJpaRepository的findAll方法实现分页改造](https://blog.csdn.net/HowCanYouDoIt/article/details/115190222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值