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

相关推荐
香香甜甜的辣椒炒肉2 小时前
SpringMVC高级应用和MyBatis-Plus的概念和使用
mybatis
鸡蛋灌Bean2 小时前
mybatis分页深入了解
java·数据库·mybatis
鸽芷咕4 小时前
KingbaseES数据类型完全指南:从基础CHAR到JSON/XML/几何类型
xml·oracle·json
看腻了那片水21 小时前
开源一个对业务代码零侵入的透明数据治理框架 —— 【sangsang】
java·mybatis
ffqws_1 天前
MyBatis 动态 SQL 详解:从原理到实战
java·sql·mybatis
浮尘笔记1 天前
在Snowy后台无需编码实现自动化生成CRUD操作流程
java·开发语言·经验分享·spring boot·后端·程序人生·mybatis
河阿里1 天前
MyBatis:高效开发全流程+示例
mybatis
随风,奔跑1 天前
Mybatis-Plus学习笔记
java·笔记·学习·mybatis
Full Stack Developme2 天前
MyBatis-Plus YAML 配置教程
mybatis
xuhaoyu_cpp_java2 天前
MyBatis学习(五)
经验分享·笔记·学习·mybatis