利用MabtisPlus实现分页查询,一个例子让你理解清楚

我们来模拟一个分页查询的案例:

假设数据库中有以下 Product 表的数据:

idnameprice
1iPhone 12 Pro1200
2iPad Air800
3MacBook Pro1500
4iPhone 111000
5iPhone 121100
6iPhone SE600
7iPhone 12 Mini900
8iPad Mini1300
9AirPods200
10Apple Watch300
11MacBook Air1200
12iPhone XR800
13iMac2500
14iPod Touch400
15HomePod350
16Magic Mouse100
17Apple Pencil150
18Apple TV180
19AirTag50
20Mac Mini700

现在我们要进行分页查询,每页显示 5 条记录,并按照价格字段降序排序,并且在控制台打印。

@Service
public class ProductService {

    @Resource
    private ProductMapper productMapper;

    public IPage<Product> getProductListWithPage(int pageNum, int pageSize) {
        Page<Product> page = new Page<>(pageNum, pageSize);

        LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(Product::getPrice); // 按价格字段降序排序

        IPage<Product> productIPage = productMapper.selectPage(page, queryWrapper);
        return productIPage;
    }
    
    public void printProducts(IPage<Product> productIPage) {
       ** //获取当前页的数据列表
        List<Product> productList = productIPage.getRecords();**
        for (Product product : productList) {
            System.out.println("ID: " + product.getId() + ", Name: " + product.getName() + ", Price: " + product.getPrice());
        }
    }
}

假设我们调用 getProductListWithPage(1, 5) 方法,表示查询第一页,每页显示 5 条记录。

idnameprice
13iMac2500
3MacBook Pro1500
8iPad Mini1300
1iPhone 12 Pro1200
11MacBook Air1200

这个时候IPage的值为

  1. List<Product> records:当前页的数据列表,共有 5 条记录。这些记录是满足查询条件的第一页数据,即价格最高的五个产品记录。
  2. long total:总记录数,共有 20 条记录满足查询条件。这个值表示满足查询条件的总记录数。
  3. long size:每页显示的记录数,每页显示 5 条记录。这个值表示每页显示的记录数,是传入 getProductListWithPage 方法时指定的每页大小。
  4. long current:当前页码,查询的是第一页,即 current 为 1。这个值表示当前查询的页码,是传入 getProductListWithPage 方法时指定的页码。
  5. long pages:总页数,由于总记录数是 20 条,每页显示 5 条记录,所以总页数为 4。这个值表示满足查询条件的总页数,是根据总记录数和每页显示的记录数计算得出的。
  6. boolean searchCount:是否进行 count 查询,为 true。这个值表示是否查询总记录数,在 getProductListWithPage 方法中默认为 true,即进行查询。
  7. boolean optimizeCountSql:是否优化 count SQL,为 true。这个值表示是否优化 count SQL,在 getProductListWithPage 方法中默认为 true,即进行优化。

所以,当执行 getProductListWithPage(1, 5) 方法时,IPage<Product> 对象 productIPage 中的各个属性值为:

**List<Product> records = productIPage.getRecords(); // 获取当前页的数据列表,共有 5 条记录
**long total = productIPage.getTotal(); // 总记录数,共有 20 条记录满足查询条件
long size = productIPage.getSize(); // 每页显示的记录数,每页显示 5 条记录
long current = productIPage.getCurrent(); // 当前页码,查询的是第一页,即 current 为 1
long pages = productIPage.getPages(); // 总页数,由于总记录数是 20 条,每页显示 5 条记录,所以总页数为 4
boolean searchCount = productIPage.isSearchCount(); // 是否进行 count 查询,为 true
boolean optimizeCountSql = productIPage.optimizeCountSql(); // 是否优化 count SQL,为 true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值