首先我们的分页是基于Interceptor的

所以我们的就得在我们的interceptor加上我们的PaginationInnerInterceptor对象:
代码实现:

@MapperScan("com.atguigu.mybatisplus.mapper")
@Configuration
public class mybatisConfig {

    @Bean
    public MybatisPlusInterceptor MPI(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

        return mybatisPlusInterceptor;

    }

}

②、我们实现分页功能。使用的是继承于BaseMapper接口的UserMapper接口的selectPage方法。调用该方法我们必须传入两个参数:
1、第一个是Ipage接口的实现类。根据继承关系我们可以知道:
在这里插入图片描述

其Page就是一个Ipage实现类.

2、第二个参数就是包装类Wrapper,可以传入null
代码实现:

@Autowired
    UserMapper userMapper;

    @DisplayName("pageTest")
    @Test
    public void test01(){
        Page<User> page = new Page<>(1,3);
//新建一个Page对象,泛型为我们操作的类。User1表示的是当前页码,3则是pageSize 
        Page<User> userPage1 = userMapper.selectPage(page, null);
  System.out.println("当前页:"+page.getCurrent());
  System.out.println("每页显示的条数:"+page.getSize());
  System.out.println("总记录数:"+page.getTotal());
  System.out.println("总页数:"+page.getPages());
  System.out.println("是否有上一页:"+page.hasPrevious());
  System.out.println("是否有下一页:"+page.hasNext());


//        System.out.println(userPage1);

    }

二、自定义分页功能:
首先我们需要在我们的UserMapper中定义我们的我们抽象方法,
该方法返回Page对象:


Page<User> definePageVo(@Param("page") Page<User> page,@Param("age") int age))

然后在我们userMapper.xml中配置我们自定义的的方法:

<select id="selectPageVo" resultType="com.atguigu.mybatisplus.bean.User">
    SELECT id,name,age,email from user where age >#{age}
</select>

测试:

@Test
    public void test02(){

//        注入我们的参数
        Page<User> userPage = new Page<>(2, 3);
        userMapper.selectPageVo(userPage, 23);

//       获取结果:

        System.out.println(userPage.getCurrent());


    }

即可
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐