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

相关推荐
嘵奇5 小时前
MyBatis 中 SqlMapConfig 配置文件详解
mybatis
best_virtuoso10 小时前
Mybatis MyBatis框架的缓存 一级缓存
spring·缓存·mybatis
宇神城主_蒋浩宇10 小时前
大道至简 少字全意 易经的方式看 缓存 mybatis缓存 rendis缓存场景 案例
java·缓存·mybatis
_周游12 小时前
【Spring+MyBatis】_图书管理系统(下篇)
mybatis
m0_7482338813 小时前
使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法
xml·spring·logback
zhencon-com15 小时前
如何使用qt开发一个xml发票浏览器,实现按发票样式显示
xml·c++·经验分享·python·qt·学习·金融
火烧屁屁啦16 小时前
【JavaEE进阶】MyBatis通过XML实现增删改查
xml·java-ee·mybatis
火烧屁屁啦16 小时前
【JavaEE进阶】#{}和${}
数据库·mysql·mybatis
不良人天码星1 天前
Redis的简单使用
java·spring boot·redis·mybatis