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

相关推荐
shuair5 小时前
redis缓存双写
redis·缓存·mybatis
前端程序猿之路5 小时前
AI大模型应用之-RAG 全流程
人工智能·python·gpt·语言模型·aigc·mybatis·ai编程
程序猿零零漆8 小时前
Spring之旅 - 记录学习 Spring 框架的过程和经验(二)基于Xml方式Bean的配置
xml·spring
自在极意功。17 小时前
MyBatis 动态 SQL 详解:从基础到进阶实战
java·数据库·mybatis·动态sql
利刃大大20 小时前
【MyBatis】MyBatis操作动态sql && MyBatisGenerator
数据库·sql·mybatis
柒.梧.1 天前
MyBatis实战精讲:完整用户CRUD操作全解析
mybatis
cike_y1 天前
Mybatis-万能的Map&模糊查询
java·开发语言·mybatis·安全开发
开开心心_Every1 天前
无广告干扰:简单好用文字LOGO设计工具
xml·java·网络·数据库·华为od·华为云·excel
罗政1 天前
mybatis-plus插件解决sql报错:this is incompatible with sql_mode=only_full_group_by ”
数据库·sql·mybatis
武子康1 天前
Java-210 Spring AMQP 整合 RabbitMQ:JavaConfig 注解配置、RabbitTemplate 发送/同步接收与坑位速查
xml·java·spring·消息队列·rabbitmq·java-rabbitmq·mq