mybatis-plus分页查询工具使用

MybatisPlus简介

Mybatis(半自动)在持久层框架中是非常火的,一般项目都是基于ssm。虽然mybatis可以直接在xml或注解中通过SQL语句操作数据库,很是灵活。但是其操作都要通过SQL语句进行,就必须写大量的xml文件或者注解,很是麻烦。mybatis-plus(自动)就很好的解决了这个问题。

Mybatis-Plus(简称MP)是 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网

mybatis-plus自带分页插件,那么我们怎么使用mybatis-plus工具完成分页查询呢?

依赖导入

要使用mybatis-plus工具,首先需要在pom文件中导入需要的依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.2</version>
</dependency>

这里的版本不唯一,开发自己的项目可以选择使用最新版本,最新版本可以参考官网或着maven仓库。

添加配置类MyBatisPlusConfig

@Configuration
@MapperScan("com.xxxx.mybatisplus.mapper")
public class MyBatisPlusConfig {
     //分页插件
   @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

这个配置类不仅仅可以配置分页插件,还可以配置mybatis-plus的其他插件

例如逻辑删除组件和性能分析组件:

@EnableTransactionManagement//自动管理事务
@Configuration//配置类
public class MyBatisPlusConfig {
    //分页插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    //逻辑删除组件
    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }

    //性能分析插件
    @Bean
    @Profile({"dev","test"})//设置dev开发、test测试 环境开启  保证我们的效率
    public PerformanceInterceptor performanceInterceptor(){
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(100);//设置sql最大执行时间*ms,如果超过了则不执行
        performanceInterceptor.setFormat(true);//开启sql格式化
        return performanceInterceptor;
    }
}

编写测试方法

@Test
public void testPage(){
    //new Page()中的两个参数分别是当前页码,每页显示数量
    Page<User> page = userMapper.selectPage(new Page<>(1, 2), null);
    List<User> users = page.getRecords();
    users.forEach(System.out::println);
}

这里的(1,2)分别代表开始的页数和每页能存放的数据多少,即页面大小

在我们的日常开发中,还可以使用自定义分页

自定义分页

UserMapper接口中定义一个方法

**
  * 根据年龄查询用户列表,分页显示 
  * @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);
}

以下罗列了一些关于自定义用法的插件使用方法

​
 @Test//测试分页查询
    public void testPage(){
        //参数一current:当前页   参数二size:页面大小
        //使用了分页插件之后,所有的分页操作都变得简单了
        Page<User> page = new Page<>(2,5);
        userMapper.selectPage(page,null);
        page.getRecords().forEach(System.out::println);
        System.out.println(page.getCurrent());
        System.out.println(page.getSize());
        System.out.println(page.hasNext());
        System.out.println(page.getPages());//3
        System.out.println(page.hasPrevious());
        System.out.println("总页数==>"+page.getTotal());
    }

完成了以上步骤就可以使用分页插件完成页面的数据传送啦,往前端传送的一般都是我们存在page中的参数,通过session传送到前端,然后在前端页面取出使用。也可以使用ajax利用json格式完成数据的使用。

上述测试结果

 以上就是分页插件的使用啦,使用起来非常简单的,有兴趣的伙伴可以动手实验起来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值