PageHelper依赖框架使用

文章介绍了如何引入PageHelper作为MyBatis的分页框架,通过示例展示了其在测试类中的使用。同时,为了实现解耦,创建了PageData类来存储分页信息,并设计了一个工具类PageInfoToPageDataConverter将PageHelper的PageInfo转换为PageData,以提高代码的可维护性。
摘要由CSDN通过智能技术生成

引入依赖

<!-- 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;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值