解决mybatis plus 分页查询有条数,total和pages都是零的问题

一. 问题还原

1. Controller代码部分

Page<FixedAssetsEntity> pageForPlus = getPage();

Page<FixedAssetsEntity> fixedAssetsEntityPage = fixedAssetsService.selectPage(pageForPlus);

2.spring-mybatis.xml中的sqlSessionFactory配置

 <bean id="sqlSessionFactory"
   class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
  <!-- 配置数据源 -->
  <property name="dataSource" ref="dataSource" />
  <!-- 自动扫描 Xml 文件位置 -->
  <property name="mapperLocations" value="classpath*:mapping/**/*.xml" />
  <!-- 配置 Mybatis 配置文件(可无) -->
  <property name="configLocation" value="classpath:mybatis-config.xml" />
  <!-- 配置包别名,支持通配符 * 或者 ; 分割 -->
  <property name="typeAliasesPackage" value="com.syb.dto,com.syb.sys.entity" />
  <!-- 枚举属性配置扫描,支持通配符 * 或者 ; 分割 -->
  <!-- <property name="typeEnumsPackage" value="com.baomidou.springmvc.entity.*.enums"/> -->
  <!-- 以上配置和传统 Mybatis 一致 -->
  <!-- MP 全局配置注入 -->
  <property name="globalConfig" ref="globalConfig" />
 </bean>

打断点查看fixedAssetsEntityPage,records条目正确,但是total和pages都是0

二. 解决

查阅官方文档发现,缺少了分页插件的配置,在sqlSessionFactory中添加分页插件,添加后为

<bean id="sqlSessionFactory"
   class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
  <!-- 配置数据源 -->
  <property name="dataSource" ref="dataSource" />
  <!-- 自动扫描 Xml 文件位置 -->
  <property name="mapperLocations" value="classpath*:mapping/**/*.xml" />
  <!-- 配置 Mybatis 配置文件(可无) -->
  <property name="configLocation" value="classpath:mybatis-config.xml" />
  <!-- 配置包别名,支持通配符 * 或者 ; 分割 -->
  <property name="typeAliasesPackage" value="com.syb.dto,com.syb.sys.entity" />
  <!-- 枚举属性配置扫描,支持通配符 * 或者 ; 分割 -->
  <!-- <property name="typeEnumsPackage" value="com.baomidou.springmvc.entity.*.enums"/> -->
  <!-- 以上配置和传统 Mybatis 一致 -->
  <!-- MP 全局配置注入 -->
  <property name="plugins">
   <array>
    <!-- 分页插件配置 -->
    <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
     <property name="dialectType" value="mysql" />
    </bean>
   </array>
  </property>
  <property name="globalConfig" ref="globalConfig" />
 </bean>

运行程序,打断点查看,total和page已经正常显示

补充知识:mybatisPlus分页查询多次查到相同数据的问题

一、问题描述

使用 mybatisPlus 3.1.0,在同一个方法内,多次调用同一个方法进行分页查询,每次查询的分页页码递增,结果每次查到的数据都一样。

二、相关知识:mybatis 一级缓存

mybatis存在缓存机制,查询到的数据会纳入缓存,同一sqlSession共享的叫一级缓存。默认情况下,mybatis会使用一级缓存

会取一级缓存的条件:

1、同一个 sqlSession

2、同一个 Mapper 方法

3、参数没有发生变化

三、问题原因

mybatis 判断是否需要使用一级缓存的代码,早于 mybatisPlus 分页插件拦截的代码执行(分页代码早一点执行,才有机会将分页参数也作为是否取缓存的依据)

附图:

四、解决办法

在 DAO.xml 对应的 select 标签里,增加属性 flushCache="true"​

以上这篇解决mybatis plus 分页查询有条数,total和pages都是零的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • mybatis-plus分页查询的实现示例

    按照官方文档进行的配置:快速开始|mybatis-plus 引入依赖: <!-- 引入mybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!--

  • mybatis-plus分页传入参数后sql where条件没有limit分页信息操作

    折腾了差不多两个小时,各种方法尝试,后来想想应该是where过滤后的数据量没有达到默认一页规定的数量所以干脆where就不显示limit信息了,试了一下还真是...这作者还真是把程序做的足够智能,可是这个智能也让我白白花掉了两个小时...还是自己太笨了-- 但是奇怪的是,如果我不设置QueryWrapper参数,where后面的分页限制又是可以出来的.百思不得其解作者的想法... 具体看代码: @Override public PageUtils queryPage(Map<String, Ob

  • 解决Mybatis-Plus操作分页后数据失效问题

    业务场景 我们知道在使用PageHelper分页插件时,会对执行PageHelper.startPage(pageNum, pageSize);方法后的第一条查询语句进行分页操作.在开发中总会遇到这样的业务情景,在进行分页查询后,需要对获得的列表数据包装成另一种类型,此时需要对新类型的列表进行分页,然而由于PageInfo<T>因为泛型的原因,导致处理后的列表不能加入到该类中. 如,我在数据库分页后查询到的类为PageInfo<User>,此时改类中的list属性为User,在当前

  • MyBatis-Plus 分页查询以及自定义sql分页的实现

    一.引言 分页查询每个人程序猿几乎都使用过,但是有部分同学不懂什么是物理分页和逻辑分页. 物理分页:相当于执行了limit分页语句,返回部分数据.物理分页只返回部分数据占用内存小,能够获取数据库最新的状态,实施性比较强,一般适用于数据量比较大,数据更新比较频繁的场景. 逻辑分页:一次性把全部的数据取出来,通过程序进行筛选数据.如果数据量大的情况下会消耗大量的内存,由于逻辑分页只需要读取数据库一次,不能获取数据库最新状态,实施性比较差,适用于数据量小,数据稳定的场合. 那么MP中的物理分页怎么实现

  • 解决mybatis plus 分页查询有条数,total和pages都是零的问题

    一. 问题还原 1. Controller代码部分 Page<FixedAssetsEntity> pageForPlus = getPage(); Page<FixedAssetsEntity> fixedAssetsEntityPage = fixedAssetsService.selectPage(pageForPlus); 2.spring-mybatis.xml中的sqlSessionFactory配置 <bean id="sqlSessionFactor

  • 完美解决MybatisPlus插件分页查询不起作用总是查询全部数据问题

    问题描述: 在使用mybatisplus插件进行分页查询时分页参数不起作用,总是查出来全部数据. 原因分析: 查看打印的sql日志发现sql后面并没有limit条件,怀疑是缺少配置. 解决方案: 查阅资料通过添加配置类MybatisPlusConfig解决问题: @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ return new

  • Mybatis RowBounds 限制查询条数的实现代码

    Oracle 数据库,查询增加RowBounds限制查询条数,默认是0到1000条 private final static int rowLimit = 1000; //限制查询条数 private final static RowBounds QUERY_LIMIT=new RowBounds(0,rowLimit); public List<T> select(String sqlID, T t) throws DBException, RecordNotFoundException {

  • 解决mybatis一对多查询resultMap只返回了一条记录问题

    问题描述:因为领导的一个需求,需要用到使用resultMap,很久没使用了,结果就除了点意外.就记录下这个问题 准备两个类:author(作者)和book(书),数据库创建对应的author->book一对多的数据 @Data public class Author { private Integer id; private String name; private String phone; private String address; private List<Book> book

  • 解决mybatis三表连接查询数据重复的问题

    此问题的产生,主要是数据库的字段名一样导致 三张表 DOCTOR JOB OBJECT 有问题的查询语句和查询结果是: SELECT d.*,j.*,o.* from (select d.*,rownum r from DOCTOR d where rownum<=6) d join job j on d.job_id=j.id join object o on o.id=d.object_id where r>0 <img src="https://img-blog.csdn

  • MyBatis中模糊查询使用CONCAT('%',#{str},'%')出错的解决

    目录 模糊查询使用CONCAT('%',#{str},'%')出错 原因及解决 MyBatis like模糊查询,CONCAT函数用法 以MySQL为例 模糊查询使用CONCAT('%',#{str},'%')出错 原因及解决 经过我一套乱七八糟毫无思路地查找后,发现不是Mybatis的原因,原来是SQL server不支持CONCAT函数,直接用加号连接就好 MyBatis like模糊查询,CONCAT函数用法 以MySQL为例 <select id="getByPage"

  • 如何使用mybatis-plus实现分页查询功能

    今天就跟大家聊聊有关使用mybatis-plus如何实现分页查询功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获. 引入依赖: <!-- 引入mybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <ver

  • 解决mybatis plus 一对多分页查询问题

    最近用mybatis plus做项目,单表的增删改查都正常,做到 1对多表的分页时,用resultMap返回的时候发现返回的记录和总数对不上 返回的记录是 一 表的,二返回的总数是 多 表 查了一下,这个或者是PLUS的bug 大概的解决办法如下图:用collection,传参用column,我这里用了一个小技巧, 把外面传入的参数,作为主表的column传入到从表. 这里没找到其他方法,有其他方法可以评论告诉我 补充知识:解决Mybatis-plus利用collection查询一对多分页数据的

  • Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法

    目录 前言 一.问题说明 1.引入依赖 2.Mybatis-Plus配置 3.创建mapper层 4.编写xxxMapper.xml文件 5.测试一(不传任何条件,只分页) 5.1.结果总结 5.2.结果分析 6.测试二(传两个表的条件) 6.1.测试结果 6.2.结果总结 6.3.结果分析 二.解决 1.没条件查询只分页 2.两个表都有条件 3.结果总结 4.结果分析 5.最终方案 5.1.坑 三.结束语 前言 项目老大说项目需要重构搜索功能,决定交给我这个比较闲的人! 嗯 ??? 因为以前的

随机推荐