窥探系列之Mybatis-plus XML分页查询

mybatisPlus分页查总数

Page类在mybatisPlus中用于分页查询,继承Pagination类,Pagination类的searchCount字段控制是否查询总记录数

顺着看哪里用到了searchCount:

com.baomidou.mybatisplus.plugins.PaginationInterceptor 是mybatisPlus的一个插件,也就是说mybatis是通过插件的方式在分页的时候查询总数;

红圈中使用sql解析包jsqlparser根据原sql生成count语句,查询出总数然后set到page中,这里有两个前提条件

  1. rowBounds是Pagination类型对象;
  2. searchCount=true;

rowBounds怎么来的?

可以看到rowBounds是statementHandler对象的一个属性;

org.apache.ibatis.binding.MapperMethod


来到这里基本看明白了,mybatisPlus会从Mapper的方法的参数筛选出RowBounds类型的对象,然后

设置到statementHandler中,才有了上面我们说到的从statmentHandler取出rowBounds对象;

org.apache.ibatis.executor.SimpleExecutor#doQuery

如何实现XML自定义sql分页同时查总数?

我们需要在自定义的Mapper方法中,添加一个Page类型参数即可,参考com.baomidou.mybatisplus.service.impl.ServiceImpl#selectPage(com.baomidou.mybatisplus.plugins.Page, com.baomidou.mybatisplus.mapper.Wrapper)

相关推荐
哈库纳玛塔塔1 天前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
小马爱打代码2 天前
MyBatis:插件模块详解
mybatis
Codeking__2 天前
Redis初识——什么是Redis
数据库·redis·mybatis
y***n6142 天前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
hqp2 天前
SQLite 不支持 LocalDateTime
sqlite·mybatis
用户8307196840822 天前
秒杀面试!MyBatis-Spring-Boot 初始化流程深度拆解
spring boot·mybatis
chilavert3182 天前
技术演进中的开发沉思-304计算机原理:XML
xml·计算机原理
8***f3952 天前
Spring 中使用Mybatis,超详细
spring·tomcat·mybatis
w***76552 天前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
张较瘦_2 天前
SpringBoot3 | MyBatis-Plus 搞定宠物管理:从0到1实现增删改查
mybatis·宠物