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

相关推荐
zl_code_le28 分钟前
浅谈MapperScan
mybatis
Boop_wu3 小时前
[Java EE进阶] 图书管理系统(2)
spring·java-ee·maven·mybatis·状态模式
小张小张爱学习4 小时前
Mybatis高频面试题
java·spring·mybatis
xuhaoyu_cpp_java5 小时前
Mybatis学习(四)
java·经验分享·笔记·学习·mybatis
invicinble16 小时前
mybatis的核心机制沉淀
mybatis
m0_3801138417 小时前
补单系统搭建及源码分享
数据库·spring boot·mybatis
代码不加糖19 小时前
0基础搭建前后端分离项目:实现菜单与界面左右布局
java·前端·javascript·mysql·elementui·mybatis
Boop_wu19 小时前
[Java EE 进阶]Mybatis进阶(动态SQL)
java·数据库·maven·mybatis
xuhaoyu_cpp_java21 小时前
MyBatis学习(二)
java·经验分享·笔记·学习·mybatis
java1234_小锋1 天前
MyBatis中XML映射有哪些标签?
xml·tomcat·mybatis