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

相关推荐
sin22018 小时前
MyBatis的执行流程
java·开发语言·mybatis
高山上有一只小老虎11 小时前
mybatisplus实现分页查询
java·spring boot·mybatis
独自破碎E16 小时前
MyBatis Flex和MyBatis Plus的区别
java·开发语言·mybatis
小北方城市网16 小时前
MySQL 索引优化实战:从慢查询到高性能
数据库·spring boot·后端·mysql·rabbitmq·mybatis·java-rabbitmq
小北方城市网18 小时前
生产级 Spring Boot + MyBatis 核心配置模板
java·spring boot·redis·后端·spring·性能优化·mybatis
二等饼干~za89866820 小时前
Geo优化源码开发:关键技术解析与实践
数据库·sql·重构·mybatis·音视频
sunnyday042621 小时前
Spring Boot 日志配置详解:log4j2.xml 的完整配置指南
xml·spring boot·log4j
WZTTMoon21 小时前
MyBatis SQL执行流程详解
sql·mybatis
消失的旧时光-194321 小时前
第六课 · 6.1 从 JDBC 到 MyBatis:SQL 工程化是如何发生的?
java·sql·mybatis
熊出没1 天前
关于MyBatis Mapper 接口与 XML 映射机制的分析
xml·microsoft·mybatis