引入依赖
<!-- PageHelper:专用于MyBatis的分页框架 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
测试PageHelper
@SpringBootTest
public class PageHelperTests {
@Autowired
TagMapper mapper;
@Test
void listTagType() {
Integer pageNum = 2; // 页码,从2开始顺序编号
Integer pageSize = 2; // 每页多少条数据
PageHelper.startPage(pageNum, pageSize); // 设计分页参数
List<?> list = mapper.listTagType(); // 【注意】必须紧随“PageHelper.startPage()”之后,否则,可能产生线程安全问题
System.out.println(list);
for (Object item : list) {
System.out.println("列表项:" + item);
}
PageInfo<?> pageInfo = new PageInfo<>(list);
System.out.println(pageInfo);
}
}
实现解耦:
1·创建PageData类
@Data
@Accessors(chain = true)
public class PageData<T> implements Serializable {
/**
* 每页记录数
*/
private Integer pageSize;
/**
* 记录总数
*/
private Long total;
/**
* 当前页码
*/
private Integer currentPage;
/**
* 最大页码
*/
private Integer maxPage;
/**
* 数据列表
*/
private List<T> list;
}
2·创建工具转化类:
public class PageInfoToPageDataConverter {
/**
* 将PageHelper框架中的PageInfo类型对象转换成自定义的PageData类型对象
*
* @param pageInfo PageInfo对象
* @param <T> PageInfo对象中的列表数据中的元素数据的类型
* @return 自定义的PageData类型的对象
*/
public synchronized static <T> PageData<T> convert(PageInfo<T> pageInfo) {
PageData<T> pageData = new PageData<>();
pageData.setPageSize(pageInfo.getPageSize())
.setTotal(pageInfo.getTotal())
.setCurrentPage(pageInfo.getPageNum())
.setMaxPage(pageInfo.getPages())
.setList(pageInfo.getList());
return pageData;
}
}
3·接口中的方法:
PageData<TagTypeListItemVO> listTagType(Integer pageNum, Integer pageSize);
4·调用转换工具类中的静态方法实现:
@Override
public PageData<TagTypeListItemVO> listTagType(Integer pageNum, Integer pageSize) {
log.debug("开始执行【查询标签类别列表】,页码:{},每页记录数:{}", pageNum, pageSize);
PageHelper.startPage(pageNum, pageSize);
List<TagTypeListItemVO> tagTypeList = tagMapper.listTagType();
PageInfo<TagTypeListItemVO> pageInfo = new PageInfo<>(tagTypeList);
PageData<TagTypeListItemVO> pageData = PageInfoToPageDataConverter.convert(pageInfo);
return pageData;
}