窥探系列之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)

相关推荐
z***67775 小时前
SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
spring boot·tomcat·mybatis
b***67647 小时前
Springboot3 Mybatis-plus 3.5.9
数据库·oracle·mybatis
k***19514 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
e***749519 小时前
SpringCloud 系列教程:微服务的未来(二)Mybatis-Plus的条件构造器、自定义SQL、Service接口基本用法
spring cloud·微服务·mybatis
chxii19 小时前
在 Spring Boot 中,MyBatis 的“自动提交”行为解析
java·数据库·mybatis
还算善良_1 天前
【XML生成】根据JSON格式化的报文,动态生成XML
xml·json
有一个好名字1 天前
MyBatis-Plus 三种数据库操作方式详解 + 常用方法大全
数据库·mybatis
颜如玉1 天前
动态拼接SQL实践备忘📝
java·sql·mybatis
galaxyffang2 天前
skywalking整合logback.xml日志,日志文件出现乱码问题解决
xml·logback·skywalking
朝新_2 天前
【实战】博客系统:项目公共模块 + 博客列表的实现
数据库·笔记·sql·mybatis·交互·javaee