SpringBoot JPA实践之@Query查询之分页实现
2020-05-01 22:12:00
阅读:()
@Query注解提供了对分页的支持,通常的分页需要两个SQL,一个是查询count语句,一个是查询data语句,使用起来比较简单,直接最后一个参数传递pageable类型参数即可,至于是否使用可自行斟酌。
网络上有些资料里所述的使用特殊表达式“ORDER BY ?#{#pageable}”来实现分页,这种方式我在Oracle中也用过一次,印象中这种方式实现的分页查询在翻页至最后一页时,系统内部会打印输出一个错误信息的Log,不影响实际运行,本文中采用现时间的最新版本,下面为对应的具体实现。
代码实现一(查询返回Entity)
Repository
/**
* 查询分页:User类型为Entity对象
*
* @author chendd
* @date 2020/5/2 21:22
*/
public interface UserQueryPageRepository extends BaseRepository<User, String> {
@Query(countQuery = "select count(*) from user" ,
value = "select a.* from user a where 1=1" ,
nativeQuery = true)
Page<User> queryUsersPage(Pageable pageable);
}
Test
/**
* 查询分页
*
* @author chendd
* @date 2020/5/2 21:28
*/
public class UserQueryPageTest extends ApplicationTest {
@Resource
private UserQueryPageRepository repository;
@Test
public void testQueryPage() {
Pageable pageable = PageRequest.of(0 , 5 , Sort.by(Sort.Order.asc("name")));
Page<User> page = repository.queryUsersPage(pageable);
List<User> userList = page.getContent();
Assert.assertNotNull(userList);
}
}
代码实现二(查询返回Interface结果集)
代码实现三(查询返回Interface结果集)
跟实现二的区别是,传递pageable类型后,仍然无需考虑分页信息,且支持order by排序。
你可能感兴趣的:
互动()
评论()
比起点赞,站长更喜欢登录后的评论
-
0 -
0 -
0 -
0 -
0