MyBatis-Plus分页插件的配置和使用&&自定义分页功能

a>添加配置类

@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}

b>测试

@Autowired
private ProductMapper productMapper;

/** MyBatis-Plus分页插件的配置和使用和分页相关数据的获取 **/
@Test
public void testPage() {
    /*
        SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user
        WHERE is_deleted=0 LIMIT ?
     */
    Page page = new Page<>(1, 3);
    userMapper.selectPage(page, null);
    System.out.println( page.getRecords());
    System.out.println("总页数:"  + page.getPages());
    System.out.println("总记录数" + page.getTotal());
    System.out.println("是否有上一页" + page.hasNext());
    System.out.println("是否有下一页:" + page.hasPrevious());
}

测试结果:

[User(id=1, name=Jone, age=18, [email protected], sex=null, isDeleted=0), User(id=2, name=Jack, age=18, [email protected], sex=null, isDeleted=0), User(id=3, name=Tom, age=18, [email protected], sex=null, isDeleted=0)]

总页数:3

总记录数8

是否有上一页true

是否有下一页:false

c>分页相关数据获取

要获取Page对象中的数据,你可以使用以下方法:

1.  使用getRecords()方法:getRecords()方法返回一个包含查询结果的List对象

List userList = userPage.getRecords();

 你可以通过遍历userList来访问每个User对象的属性。

2.  使用getTotal()方法:getTotal()方法返回总记录数

long total = userPage.getTotal();

这个方法返回的是满足查询条件的总记录数,方便你进行分页展示。

3.  使用其他分页的相关方法,如getCurrent()getSize()getPages()等。

int currentPage = userPage.getCurrent(); // 当前页码
int pageSize = userPage.getSize(); // 每页显示的记录数
int totalPages = userPage.getPages(); // 总页数

这些方法可以帮助你获取当前页、每页显示的记录数和总页数等分页相关信息。

d>自定义分页功能

传递一个Page/IPage对象,返回一个Page/IPage对象,MybatisPlus 会自动进行分页。其中传递参数 Page/IPage 即自动分页,必须放在第一位。

/**
* 根据年龄查询用户列表,分页显示
* @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位 * @param age 年龄
* @return
*/
Page selectPageVo(@Param("page") Page page, @Param("age") Integer age);

你可能感兴趣的:(mybatis,java,spring)