【代码解析】代码解析之分页查询(1)

发布时间:2023年12月31日
public PageBean<Account> findPage(Account account, PageBean<Account> pageBean){
		ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("mobile", GenericPropertyMatchers.contains());
		withMatcher = withMatcher.withIgnorePaths("balance","sex","status");
		Example<Account> example = Example.of(account, withMatcher);
		Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize());
		Page<Account> findAll = accountDao.findAll(example, pageable);
		pageBean.setContent(findAll.getContent());
		pageBean.setTotal(findAll.getTotalElements());
		pageBean.setTotalPage(findAll.getTotalPages());
		return pageBean;
	}

这段代码一个用于分页查询 Account 对象的方法,?它使用Spring Data JPA的功能,通过ExampleMatcherPageable对象来构建和执行分页查询。

以下是这一段代码的解析:

1.

public PageBean<Account> findPage(Account account, PageBean<Account> pageBean)

这一行代码定义了一个公共的方法,返回类型是PageBean<Account>,它接收两个两个参数:一个是 Account 对象,表示查询条件,一个是 PageBean< Account >对象,表示分页信息。

?2.

ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("mobile", GenericPropertyMatchers.contains());

这一行代码创建了一个ExampleMatcher 的对象,用于匹配查询条件,"mobile"指定了匹配的方式,GenericPropertyMatchers.contains()表示该属性值应该包含给定的值

3.?

withMatcher = withMatcher.withIgnorePaths("balance","sex","status");

这一行代码指定了三个属性("balance","sex","status")在匹配的时候将被忽略,意思是即便查询 Account 中的这些属性与给定的 account 对象的属性不完全匹配,它们也会被认为是匹配的。

4.

?? ?Example<Account> example = Example.of(account, withMatcher);?

使用上面创建的 withMatecher ,从给定的 account 对象创建一个?? ?Example<Account> 对象,这个对象用户查询数据库中的 account 记录

5.?

Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize());

这里创建了一个 Pageable 对象,用于分页查询,它从给定的pageBean中获取当前页码和页面大小,然后创建一个新的对象 PageRequest 。需要注意的是页码是从0开始,所以需要当前页码减去1

6.

Page<Account> findAll = accountDao.findAll(example, pageable);

使用上面创建的example,pageable 对象,从数据访问对象,执行分页查询,查询的结果是一个 Page<Account> 对象,该对象包含查询到的记录和分页信息。

7.

pageBean.setContent(findAll.getContent());

将查询结果中的内容传入pageBean 对象中

8.

pageBean.setTotal(findAll.getTotalElements())? ?

将查询的结果中的记录数传入pageBean 对象中

9.

?pageBean.setTotalPage(findAll.getTotalPages());?

将查询的结果的总页数传入pageBean对象中

10.
? return pageBean;

返回pageBean 将包含所有必要的信息,调用此方法的客户端可以获取查询结果和分页信息

文章来源:https://blog.csdn.net/m0_67930426/article/details/135317799
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。