美文网首页
Mybatis-Plus分页插件

Mybatis-Plus分页插件

作者: 天一方蓝 | 来源:发表于2019-08-21 16:51 被阅读0次

    分页插件

    示例工程:

    👉 mybatis-plus-sample-pagination

    <!-- spring xml 方式 -->
    <plugins>
        <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
            <property name="sqlParser" ref="自定义解析类、可以没有" />
            <property name="dialectClazz" value="自定义方言类、可以没有" />
        </plugin>
    </plugins>
    
    //Spring boot方式
    @EnableTransactionManagement
    @Configuration
    @MapperScan("com.baomidou.cloud.service.*.mapper*")
    public class MybatisPlusConfig {
    
        /**
         * 分页插件
         */
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // paginationInterceptor.setLimit(你的最大单页限制数量,默认 500 条,小于 0 如 -1 不受限制);
            return paginationInterceptor;
        }
    }
    
    

    XML 自定义分页

    • UserMapper.java 方法内容
    public interface UserMapper{//可以继承或者不继承BaseMapper
        /**
         * <p>
         * 查询 : 根据state状态查询用户列表,分页显示
         * 注意!!: 如果入参是有多个,需要加注解指定参数名才能在xml中取值
         * </p>
         *
         * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(你可以继承Page实现自己的分页对象)
         * @param state 状态
         * @return 分页对象
         */
        IPage<User> selectPageVo(Page page, @Param("state") Integer state);
    }
    
    • UserMapper.xml 等同于编写一个普通 list 查询,mybatis-plus 自动替你分页
    <select id="selectPageVo" resultType="com.baomidou.cloud.entity.UserVo">
        SELECT id,name FROM user WHERE state=#{state}
    </select>
    
    • UserServiceImpl.java 调用分页方法
    public IPage<User> selectUserPage(Page<User> page, Integer state) {
        // 不进行 count sql 优化,解决 MP 无法自动优化 SQL 问题,这时候你需要自己查询 count 部分
        // page.setOptimizeCountSql(false);
        // 当 total 为小于 0 或者设置 setSearchCount(false) 分页插件不会进行 count 查询
        // 要点!! 分页返回的对象与传入的对象是同一个
        return userMapper.selectPageVo(page, state);
    }
    

    启用分页插件和启用乐观锁插件都是通过注册一个Bean完成
    1、启用分页插件

    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
    

    复制代码2、测试分页查询

    @Test
    public void testSelectPage(){
        //构建分页条件第二页每页显示3条
        Page<User> page=new Page<>(2,3);
        //使用分页条件查询,不使用其他条件
        userMapper.selectPage(page, null);
        //获取分页后查询出的记录
        List<User> records = page.getRecords();
        records.forEach(System.out::println);
        System.out.println("是否有下一页:"+page.hasNext());
        System.out.println("是否有上一页:"+page.hasPrevious());
        System.out.println("总记录数:"+page.getTotal());
    }
    

    相关文章

      网友评论

          本文标题:Mybatis-Plus分页插件

          本文链接:https://www.haomeiwen.com/subject/xtsisctx.html