SpringBoot(六)mybatis-plus分页插件

1.分页插件

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

  • 导入mybatis-plus依赖

    <!--mybatis-plus启动器-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
    ​
     <!-- 数据库驱动 -->
    <dependency>
        <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>8.0.27</version>
    </dependency>
  • 添加配置类MyBatisPlusConfig

    @Configuration
    @MapperScan("com.atguigu.mybatisplus.mapper")
    public class MyBatisPlusConfig {
        //配置MybatisPlus的插件的  Interceptor:拦截器
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor(){
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            //添加分页插件  DbType:数据库类型
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            return interceptor;
        }
    }
  • 编写测试方法

    @Test
    public void testPage(){
        //new Page()中的两个参数分别是当前页码,每页显示数量
        //SELECT id,name,age,email,is_deleted FROM t_user WHERE is_deleted=0 LIMIT ?,?
            Page<User> page = new Page<>(2,2);
            Page<User> userPage = userMapper.selectPage(page, null);
    ​
            System.out.println(userPage);
          List<User> users = page.getRecords();//分页后的数据
            users.forEach(System.out::println);
    ​
            System.out.println("总页数:"+userPage.getPages());
            System.out.println("总条数:"+userPage.getTotal());
            System.out.println("当前页:"+userPage.getCurrent());
            System.out.println("当前页显示条数:"+userPage.getSize());
            System.out.println("是否有下一页:"+userPage.hasNext());
            System.out.println("是否有上一页:"+userPage.hasPrevious());
    }

2.自定义分页

上面调用的是MyBatis-Plus提供的带有分页的方法,那么我们自己定义的方法如何实现分页呢?

  • UserMapper接口中定义一个方法

    /**
      * 根据年龄大于20的用户查询用户列表,分页显示 
      * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位 
      * @param age 年龄 
      * @return 
      */
    Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age);
  • UserMapper.xml中编写SQL实现该方法

    <select id="selectPageVo" resultType="User">
        select id,username as name,age,email from t_user where age > #{age}
    </select>
  • 编写测试方法

    @Test
    public void testPageVo(){
        Page<User> page = userMapper.selectPageVo(new Page<User>(1,2), 20);
        List<User> users = page.getRecords();
        users.forEach(System.out::println);
    }

    第二种写法

    //自定义分页 根据年龄大于20的用户查询用户列表,分页显示 
    @Test
    public void testPageVo(){
        Page<User> page = new Page<>(1,2);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("age",20);
        userMapper.selectPage(page,queryWrapper);
        List<User> users = page.getRecords();
        users.forEach(System.out::println);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值