java mybatis分页_【Java】MyBatis-Plus 分页查询以及自定义sql分页

本文介绍了MyBatis-Plus中的物理分页和自定义SQL分页查询。物理分页通过Limit实现,减少了内存消耗,适合大数据量场景。逻辑分页则一次性加载所有数据,适用于数据量小的情况。在MyBatis-Plus中,通过PaginationInterceptor配置分页插件,并使用IPage接口实现分页查询。此外,文章还展示了如何通过自定义SQL进行分页查询,以及多表连接查询的分页实现。
摘要由CSDN通过智能技术生成

首页

专栏

java

文章详情

0

MyBatis-Plus 分页查询以及自定义sql分页

114008.html老炮说Java发布于 今天 14:13

欢迎微信搜索公众号【java版web项目】获取资源:java学习视频/设计模式笔记/算法手册/java项目

一、引言

分页查询每个人程序猿几乎都使用过,但是有部分同学不懂什么是物理分页和逻辑分页。

物理分页:相当于执行了limit分页语句,返回部分数据。物理分页只返回部分数据占用内存小,能够获取数据库最新的状态,实施性比较强,一般适用于数据量比较大,数据更新比较频繁的场景。

逻辑分页:一次性把全部的数据取出来,通过程序进行筛选数据。如果数据量大的情况下会消耗大量的内存,由于逻辑分页只需要读取数据库一次,不能获取数据库最新状态,实施性比较差,适用于数据量小,数据稳定的场合。

那么MP中的物理分页怎么实现呢? 往下看往下看

二、配置

创建MybatisPlusConfig配置类,需要配置分页插件,小编使用的Spring boot配置方式。

/**

* @Auther: IT贱男

* @Date: 2019/6/12 15:06

* @Description: MybatisPlus配置类

*/

@Configuration

public class MyBatisPlusConfig {

/**

* 分页插件

* @return

*/

@Bean

public PaginationInterceptor paginationInterceptor() {

return new PaginationInterceptor();

}

}

三、具体分页实现

MP的Wrapper提供了两种分页查询的方式,源码如下:

/**

* 根据 entity 条件,查询全部记录(并翻页)

*

* @param page 分页查询条件(可以为 RowBounds.DEFAULT)

* @param queryWrapper 实体对象封装操作类(可以为 null)

*/

IPage selectPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);

/**

* 根据 Wrapper 条件,查询全部记录(并翻页)

*

* @param page 分页查询条件

* @param queryWrapper 实体对象封装操作类

*/

IPage> selectMapsPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);

可见两个分页方法参数都是一致的,只是返回参数略有不同,具体选择根据实际业务为准。

/**

* 分页查询

*/

@Test

public void selectByPage() {

QueryWrapper wrapper = new QueryWrapper();

wrapper.like("name", "雨").lt("age", 40);

Page page = new Page<>(1,2);

//IPage userIPage = userMapper.selectPage(page, wrapper);

IPage> mapIPage = userMapper.selectMapsPage(page, wrapper);

System.out.println("总页数"+mapIPage.getPages());

System.out.println("总记录数"+mapIPage.getTotal());

List> records = mapIPage.getRecords();

records.forEach(System.out::println);

}

以上分页查询执行sql如下,先是查询了一次总记录数,然后在查询的数据。

DEBUG==> Preparing: SELECT COUNT(1) FROM user WHERE name LIKE ? AND age < ?

DEBUG==> Parameters: %雨%(String), 40(Integer)

TRACE<== Columns: COUNT(1)

TRACE<== Row: 2

DEBUG==> Preparing: SELECT id,name,age,email,manager_id,create_time

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值