MyBatis Plus应用(三)分页插件的实践

MyBatisPlus
placeholder image
admin 发布于:2022-07-03 10:48:04
阅读:loading

1.基本介绍

数据分页在日常应用开发中会被经常使用,MyBatis Plus提供了分页插件的支持,使得对于查询分页的功能实现变得更加的简单了,若非如此需要我们手动编写count语句和列表查询语句,同时count语句某些场景还需要手动的进行SQL语句优化,而这些MyBatis Plus的分页插件都已经替我们实现好了,同时兼容多种数据库的应用。本文通过两个测试案例的实践来展示具体的分页应用,参考实现过程如下。

2.配置插件

由于是SpringBoot项目环境,需要配置PaginationInterceptor组件,此步骤必不可少,若缺少后本篇文章中的测试代码虽可正常运行,但仅会被视为普通查询,查询的数据结果并非为实际的分页查询语句,需要格外注意。

package cn.chendd.mybatisplus.config;

import ...;

/**
 * MybatisPlusConfig
 *
 * @author chendd
 * @date 2022/7/3 10:40
 */
@Configuration
public class MybatisPlusConfig {

    /**
     * 分页插件配置
     * @return 分页插件配置
     */
    @Bean
    public PaginationInterceptor getPaginationInterceptor(){
        PaginationInterceptor interceptor = new PaginationInterceptor();
        return interceptor;
    }

}

3.测试代码

本次测试案例通过调用内置的查询分页(支持查询条件的传递)和自定义Mapper函数的方式来展示分页插件的应用,更多的应用代码可转至示例源码查看,本文就罗列出部分的代码,参考如下:

 package cn.chendd.mybatisplus;

import ...;

/**
 * 分页测试
 *
 * @author chendd
 * @date 2022/7/3 9:14
 */
public class PageTest extends BaseBootstrapTest {

    @Resource
    private UserService userService;

    @Test
    public void page() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        IPage<User> pageFinder = new Page<>(1 , 10);
        IPage<User> page = this.userService.page(pageFinder, queryWrapper);
        System.out.println(String.format("pageNumber = %d , pageSize = %d , pages = %d , totals = %d , data = %s" ,
                page.getCurrent() , page.getSize() , page.getPages() , page.getTotal() , page.getRecords().toString()));
    }

    @Test
    public void pageForMapper() {
        IPage<User> pageFinder = new Page<>(1 , 10);
        IPage<User> page = this.userService.pageList(pageFinder);
        System.out.println(String.format("pageNumber = %d , pageSize = %d , pages = %d , totals = %d , data = %s" ,
                page.getCurrent() , page.getSize() , page.getPages() , page.getTotal() , page.getRecords().toString()));
    }

}
/**
 * 用户信息Mapper
 *
 * @author chendd
 * @date 2022/6/30 21:29
 */
public interface UserMapper extends BaseMapper<User> {

    /**
     * 查询数据分页
     * @param pageFinder 分页参数
     * @return 分页数据
     */
    IPage<User> pageList(IPage<User> pageFinder);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.chendd.mybatisplus.user.mapper.UserMapper">

    <!-- 查询数据分页 -->
    <select id="pageList" resultType="cn.chendd.mybatisplus.user.model.User">
        select t1.* from Sys_User t1
    </select>
</mapper>

4.输出结果

image.png

(基于对象的查询分页会增加逻辑删除字段)

image.png

(自定义Mapper的查询分页需要自己增加逻辑删除字段)


 点赞


 发表评论

当前回复:作者

 评论列表


留言区