设置MyBatis-Plus自定义分页查询中的总条数查询

5 篇文章 0 订阅
2 篇文章 0 订阅

分析Pagination对象

mybatis-plus的分页时由Pagination对象实现的,Pagination对象中有很多针对分页的常规属性,很常见,不过多分析,见以下源码。

*源码我只展示了Pagination对象的属性部分

package com.baomidou.mybatisplus.plugins.pagination;
import java.beans.Transient;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.session.RowBounds;
import com.baomidou.mybatisplus.toolkit.StringUtils;
public class Pagination extends RowBounds implements Serializable {

    private static final long serialVersionUID = 1L;
    private long total;
    private int size = 10;
    private int current = 1;
    private boolean searchCount = true;
    private boolean openSort = true;
    private boolean optimizeCountSql = true;
    private List<String> ascs;
    private List<String> descs;
    private boolean isAsc = true;
    private String orderByField;
}

其中可以看到Pagination对象的其中一个属性的名称叫做searchCount,通过字面意思就能知道是‘查询条数’,但是得注意searchCount属性是一个Boolean类型的,联想一下,表示的就是:是否查询条数。

设置searchCount为fasle

如果使用的是原生的Pagination 对象,那么就按照如下方式设置不查询总条数(设置后需要自定义总条数的查询);

Pagination page = new Pagination();
page.setSearchCount(fasle);

如果使用的是非原生的Pagination 对象,那么就实例化继承了Pagination 对象的子对象,继承后子对象就拥有了父类的属性和方法,使用子类的实例化对象去设置searchCount属性为false即可(设置后需要自定义总条数的查询)。

  • 此处我的Page对象是继承了Pagination 对象的
Page page = new Page();
page.setSearchCount(fasle);

编写自定义查询总条数的SQL,并定义函数

SQL:

<select id="count" parameterType="Map" resultType="java.lang.Integer" useCache="false">
	    SELECT COUNT(1) FROM table_name 
</select>

函数:

Integer count(Map<String,String> map);

调用函数,设置总条数

这是一个案例,Page对象继承了Pagination 对象,这里直接操作实例化的Page对象即可;将自定义查询出来的总条数赋值给Page对象的Total即可;

public Page<User> list(Map<String,String> map){
	    Page<User> query=new Page<User>(map);
		query.setSearchCount(false);
		List<User> users= baseMapper.list(query,map);
		query.setRecords(users);
		query.setTotal(baseMapper.count(map));
	    return query;
}

只是自己做个记录!!!
后面的控制层调用我就不写了。
这样再去执行查询的时候就不用因为总条数的查询慢而烦恼了!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值