MyBatis-Plus中分页插件


MyBatis-Plus中分页插件

一、自带的分页插件功能

  • 配置分页拦截器
  • 使用 Page 或 IPage

1、MyBatisPlusConfig 配置分页拦截器

package com.sgz.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 日期:2022/8/14 - 17:10
 * 需求:配置分页拦截器
 */
@Configuration
@MapperScan("com.sgz.mapper") // 扫描mapper接口所在的包
public class MyBatisPlusConfig {

    // 配置分页拦截器
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

2、测试类

package com.sgz;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sgz.mapper.UserMapper;
import com.sgz.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MyBatisPlusPluginsTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test() {
        // SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 LIMIT ?
        // 第一页每页显示三条
        Page<User> page = new Page<>(1, 3);
        // IPage<User> page = new Page<>(1, 3);
        // null:要查询的字段,null全部查询
        userMapper.selectPage(page, null);
        System.out.println(page.getRecords());  // 获取当前页的数据
        System.out.println(page.getCurrent());  // 获取当前页的页码
        System.out.println(page.getSize());  // 获取每页显示的条数
        System.out.println(page.getPages());  // 获取总页数
        System.out.println(page.getTotal());  // 获取总记录数
        System.out.println(page.hasNext());  // 是否有下一页
        System.out.println(page.hasPrevious());  // 是否有上一页
    }

}

二、自定义的分页插件功能

  • 配置分页拦截器
  • 使用 Page类
  • mapper接口与映射文件

1、MyBatisPlusConfig 配置分页拦截器

package com.sgz.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.sgz.mapper") // 扫描mapper接口所在的包
public class MyBatisPlusConfig {

    // 配置分页拦截器
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

2、mapper接口

package com.sgz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sgz.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.Map;

@Repository
public interface UserMapper extends BaseMapper<User> {

    /**
     * 通过年龄查询用户信息并分页
     * @param page MyBaits-Plus所提供的分页对象,必须位于第一个参数的位置
     * @param age
     * @return
     */
    Page<User> selectPageVo(@Param("page") Page<User> page, @Param("age") Integer age);

}

3、mapper映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--对应接口的全类名-->
<mapper namespace="com.sgz.mapper.UserMapper">

    <!-- Page<User> selectPageVo(@Param("page") Page<User> page, @Param("age") Integer age);-->
    <select id="selectPageVo" resultType="User">
        select uid, user_name, age, email
        from t_user
        where age > #{age}
    </select>

</mapper>

4、测试类

package com.sgz;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sgz.mapper.UserMapper;
import com.sgz.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MyBatisPlusPluginsTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test02() {
        // select uid, user_name, age, email from t_user where age > ? LIMIT ?
        // 第一页每页显示三条
        Page<User> page = new Page<>(1, 3);
        userMapper.selectPageVo(page,20);
        System.out.println(page.getRecords());  // 获取当前页的数据
        System.out.println(page.getCurrent());  // 获取当前页的页码
        System.out.println(page.getSize());  // 获取每页显示的条数
        System.out.println(page.getPages());  // 获取总页数
        System.out.println(page.getTotal());  // 获取总记录数
        System.out.println(page.hasNext());  // 是否有下一页
        System.out.println(page.hasPrevious());  // 是否有上一页
    }

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值