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

折腾了差不多两个小时,各种方法尝试,后来想想应该是where过滤后的数据量没有达到默认一页规定的数量所以干脆where就不显示limit信息了,试了一下还真是。。。这作者还真是把程序做的足够智能,可是这个智能也让我白白花掉了两个小时。。。还是自己太笨了……

但是奇怪的是,如果我不设置QueryWrapper参数,where后面的分页限制又是可以出来的。百思不得其解作者的想法。。。

具体看代码:

@Override
 public PageUtils queryPage(Map<String, Object> params) {

  IPage<OrderEntity> page = this.page(
    new Query<OrderEntity>().getPage(params),
    new QueryWrapper<OrderEntity>().eq(!UtilString.isNull(params.get("user_id"))
      ,"user_id", params.get("user_id"))
  );

  return new PageUtils(page);
 }

记录的目的是希望跟我一样遇到这个特殊情况的童鞋能快速绕过这个弯,时间宝贵。晚安^.^

最后附上官方文档,希望大家多看看文档系统性的了解

https://mp.baomidou.com/guide/dynamic-datasource.html

补充知识:记录逆向工程生成的mybatisplus分页方法limit失效的坑

因为我在解决问题之前也是在网上查找方法和官网查找方法都有没有解决,所以也是我写这篇文章的原因,希望

后面的同学在开发的时候能够少走弯路

controller层

 @RequestMapping("/list")
 public R list(@RequestParam Map<String, Object> params){
  PageUtils page = categoryService.queryPage(params);
  return R.ok().put("page", page);
 }

传递的参数如图

server接口

public interface CategoryService extends IService<CategoryEntity> {

 PageUtils queryPage(Map<String, Object> params);
 }

问题及解决办法(这是网上的办法并没有解决。。。。。)

然而在查询时,分页并没有生效,查询的结果是该表中的所有数据,在pom无误的情况下,检查有没有把分页拦截器注入到spring中。

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class mybatisPlusConfig {
 @Bean
 public PaginationInterceptor paginationInterceptor(){
  return new PaginationInterceptor();
 }
}

以上是在网上找的到解决办法,我复制到项目中显示方法是过时的,而且并不生效

后来找到问题是我的mybatisplus版本 太高了,所以不支持

这个是我maven中引用的版本

然后在网上搜索的拦截器方法

采用新的分页方法问题就解决了

问题的关键是 怎么去根本查找问题,对我就是反思查找问题的方法,不至于今天浪费了1,2个小时都没有找到,就是先去官方文档.

查看官方的实例代码 !!!!!!

以下是我在gitee上查找到的逆向工程

因为项目工期非常的紧,而我拿着同事的老框架代码看着非常头疼,这个时候选择逆向工程,自己搭建一个轻量级的框架那不是爽歪歪吗?

因为项目是采用的springcloud微服务,我负责的一个系统所以可以为所欲为。

这边我使用的逆向工程是gitee上的人人开源网renren-generator框架

他生成的代码中没有分页方法的拦截器,我在官网上查找到方法也是过时的,这点是很坑的。

以上这篇mybatis-plus分页传入参数后sql where条件没有limit分页信息操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

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

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

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

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

  • 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分页的实现

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

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

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

  • 基于MyBatis的parameterType传入参数类型

    目录 MyBatis的parameterType传入参数类型 1. MyBatis的传入参数parameterType类型分两种 2. 如何获取参数中的值 3.案例 mybatis 之parameterType="Long" MyBatis的parameterType传入参数类型 在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的输入参数

  • Mybatis传递多个参数进行SQL查询的用法

    PS:ibatis3如何传递多个参数有两个方法:一种是使用java.Map,另一种是使用JavaBean. 当只向xxxMapper.xml文件中传递一个参数时,可以简单的用"_parameter"来接收xxxMapper.java传递进来的参数,并代入查询,比如说这样: (1)xxxMapper.java文件中这样定义: List<String> selectAllAirportCode(Boolean mapping); (2)这时在对应的xxxMapper.xml文件

  • SQL Server存储过程同时返回分页结果集和总数

    前言 好长时间没摸数据库了,周末在家写了个报表的存储过程,一时间对使用存储过程实现分页的同时并计算出记录总数不知道怎么更好的去实现.按照我们正常的业务逻辑,存储过程数据首先是分页,其次接受若干查询条件,返回分页结果集的同时还需要返回记录总数给客户端. 我对于这样一个业务存储过程总结如下:1.内核层,通常也就是要查询的字段或者要计算的字段,这部分单独拿出来.  2.查询条件层. 如果内核只是查询一些字段的话,条件可以放在查询条件层拼接. 如果内核层完全是统计业务逻辑,那么查询条件则必须要放在内核层

  • PL/SQL中编写Oracle数据库分页的存储过程

    其实 Oracle数据库的分页还是比较容易理解的.此文以oracle数据库中的SCOTT用户的EMP表为例,用PL/SQL Developer编写一个分页存储过程,要求是:可以输入表名,每页显示记录数,当前页,返回总记录数,总页数和返回的结果集. 由于需要返回查询出来的结果集,需要在PL/SQL中创建一个package,这个包里面定义一个refcursor类型,用于记录sql语句查询出来的结果集.创建包的代码如下: create or replace package pagingPackage

  • 使用mybatis的interceptor修改执行sql以及传入参数方式

    目录 mybatis interceptor修改执行sql以及传入参数 总体思路 1.Interceptor 代码实现 2.AutoConfiguration代码实现 mybatis interceptor 处理查询参数及查询结果 拦截器:拦截update,query方法 添加xml配置 mybatis interceptor修改执行sql以及传入参数 项目中途遇到业务需求更改,在查询某张表时需要增加条件,由于涉及的sql语句多而且依赖其他服务的jar,逐个修改sql语句和接口太繁杂.项目使用m

  • Mybatis自定义SQL的关系映射、分页、排序功能的实现

    目的: 记录数据库表与实体对象之间不同的映射关系如何用mybatis的自定义sql和结果返回集处理. 1.三种对象映射关系 1.1 一对一 一个人对应一个身份证,一位同学对应一个班级,每个房间都有自己的房间号,当一个事物它对应另一个事物是唯一的,那么它们之间的关系就是一对一的. 这里我演示的案例是,一个学生有着一位老师 老师基础信息: 学生详细信息: 如果说,我们需要将两个表一起查出来,我们可以这么做: 问题: 如果对象的列重复了,必须要使用到别名 1.先定义实体结构,也就是我们返结果的实体类

  • MyBatis传入参数为List对象的实现

    SSM框架是JavaWeb必学的框架,虽说基本的增删改查很简单,但是当面临一些特殊情况时,有时还是会显得手足无措,此篇用来记录一些特殊场景下Mybatis框架的应用. 传入参数为List对象 1. 场景复现 首先有如下一张表: MySQL [test]> select * from t_entry_resource; +----+-------------+------+----------+--------+--------+---------------------+ | id | reso

  • MyBatis中传入参数parameterType类型详解

    前言 Mybatis的Mapper文件中的select.insert.update.delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型.本文主要给大家介绍了关于MyBatis传入参数parameterType类型的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1. MyBatis的传入参数parameterType类型分两种 1. 1. 基本数据类型:int,string,long,Date; 1. 2. 复杂数据类

  • Mybatis打印替换占位符后的完整Sql教程

    利用mybtis插件打印完整的sql,将占位符?替换成实际值 import org.apache.ibatis.cache.CacheKey; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.Paramete

随机推荐