实操带你使用MyBatis_Plus(四)之分页插件


分页插件

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

1、添加配置类

MybatisPlusInterceptor 这个类是用来配置Mybatis_Plus中的插件的

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

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

}

大部分人看到这些类都很懵,不知道怎么来的,下面这张图根据源码,以我的理解表示出来的关系(欢迎指点):
在这里插入图片描述

2、测试

<P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);

可以看到selectPage的参数为分页对象和条件构造器

这里的P泛型需要继承Ipage接口,Page类实现了Ipage接口
在这里插入图片描述
我们知道,进行分页查询需要两个值当前页码index,每页条数pageSize

(当前页码-1)*每条显示条数=当前页起始条数

@SpringBootTest
public class MyBatisPlusPluginsTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test01(){
        Page<User> page =new Page<>(2,3);
        userMapper.selectPage(page,null);
        System.out.println(page.toString());
    }
}

在这里插入图片描述

把page对象传进去,到时候会把结果封装到传入的page对象里

3、相关数据获取

@SpringBootTest
public class MyBatisPlusPluginsTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test01(){
        Page<User> page =new Page<>(2,3);
        userMapper.selectPage(page,null);
        System.out.println(page.getRecords());//当前页记录
        System.out.println(page.getPages());//总页数
        System.out.println(page.getTotal());//总记录数
        System.out.println(page.hasNext());//是否有下一页
        System.out.println(page.hasPrevious());//是否有上一页
        System.out.println(page.getCurrent());//获取当前页的页码
        System.out.println(page.getSize());//每页显示条数
    }
}

在这里插入图片描述

4、xml自定义分页

  1. UserMapper中定义接口方法
public interface UserMapper extends BaseMapper<User> 
    //通过年龄查询用户信息并分页
    //MyBatis_Plus所提供的分页对象必须位于第一个参数位置
    Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age);
}

page对象必须是第一个参数,否则不生效

  1. UserMapper.xml中编写SQL
<select id="selectPageVo" resultType="com.example.mybatis_plus.entity.User">
        select id,name,age,email from user where age > #{age}
</select>

注意:这里的返回值类型为User不是Page

  1. 测试
 @Test
    public void test02() {
        Page<User> page=new Page<>(1,3);
        userMapper.selectPageVo(page,20);
        System.out.println(page.getRecords());//当前页记录
        System.out.println(page.getPages());//总页数
        System.out.println(page.getTotal());//总记录数
        System.out.println(page.hasNext());//是否有下一页
        System.out.println(page.hasPrevious());//是否有上一页
        System.out.println(page.getCurrent());//获取当前页的页码
        System.out.println(page.getSize());//每页显示条数
    }

在这里插入图片描述

注意这里没有逻辑删除,因为sql语句是自定义的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值