当前位置: 首页 > news >正文

龙岗外贸网站制作百度站长平台论坛

龙岗外贸网站制作,百度站长平台论坛,电商cms系统介绍,做满屏网站的尺寸文章目录 前言原因1、Mybatis Plus版本的问题2、Mapper.xml文件中SQL语句格式问题3、Mybatis Plus默认分页拦截器问题4、分页参数传参问题5、分页配置的问题 解决方案1、升级对应的Mybatis-plus版本分页插件配置问题3、自定义分页拦截器4、正确的参数5、不同版本的配置文件3.4.…

文章目录

  • 前言
  • 原因
    • 1、Mybatis Plus版本的问题
    • 2、Mapper.xml文件中SQL语句格式问题
    • 3、Mybatis Plus默认分页拦截器问题
    • 4、分页参数传参问题
    • 5、分页配置的问题
  • 解决方案
    • 1、升级对应的Mybatis-plus版本
    • 分页插件配置问题
    • 3、自定义分页拦截器
    • 4、正确的参数
    • 5、不同版本的配置文件
      • 3.4.0之前版本
      • 3.4.0之后版本
  • 完结

前言

前端小伙伴今天问我们后端同学,说他写得列表有问题,分页数据没有成功,将所有数据都返回给前端了!

后端同学有些懵逼的说,我已经使用了service的pages接口来查询的列表,为什么失败了呢?

各位小伙伴,你们知道怎么解决这个问题吗?先考虑一下。
在这里插入图片描述

原因

1、Mybatis Plus版本的问题

当我们使用的是较旧的版本,可能存在分页失效的问题。
解决办法:升级到最新版本。

2、Mapper.xml文件中SQL语句格式问题

在Mapper.xml中书写SQL语句时,当格式错误了,就会导致分页失效。
正确的格式:在最后加上limit #{offset}, #{pageSize}
#{offset}:偏移量;
#{pageSize}:每页显示的数量。

3、Mybatis Plus默认分页拦截器问题

默认情况下,Mybatis Plus自带了一个分页插件com.baomidou.mybatisplus.plugins.PaginationInterceptor。但是,有时候在进行复杂查询时,这个分页插件可能会失效,导致分页查询不到数据。

4、分页参数传参问题

如果使用的是分页查询方法,那么在调用方法时就要传入Page对象,而且必须在此前调用setRecordsTotal方法设置总记录数。如果不设置总记录数,则分页插件无法工作。

5、分页配置的问题

不同版本的mybatis-plus需要的分页配置是不同的,是分水岭版本为3.4.0

在它之后的版本开始将原有的PaginationInterceptor 标记为过时,需要换成MybatisPlusInterceptor

解决方案

上面我们列出了5个导致分页结果失败的原因,接下来我们看看如何解决呢?分别一一对应来看。

1、升级对应的Mybatis-plus版本

如果我们使用的旧版本的Mybatis-plus,则可以升级为新版的。
在pom文件里面更新

 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version>
</dependency>

分页插件配置问题

这个可以按照上面所说的在Mapper.xml文件中调整

<select id="selectForPage" resultMap="BaseResultMap">select * from tb_user<where>1 = 1</where>limit #{offset}, #{pageSize}
</select>

配置Mybatis-plus分页插件,可以在application.yml文件中加入如下配置:

mybatis-plus:configuration:# 分页插件,一般不用修改page-params: pageNum=1;pageSize=10;count=countSql

3、自定义分页拦截器

Mybatis-plus提供了自定义分页拦截器的功能,可以根据我们自己的业务进行自定义。自定义分页拦截器需要继承com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor类,然后在实现intercept方法,在该方法中来处理我们具体的分页逻辑。
例如:可以根据前端传入的分页参数进行分页,而不是使用默认的分页参数。具体代码示例如下:

public class CustomPaginationInterceptor extends PaginationInterceptor {@Overridepublic Page SqlParserInterceptor(MappedStatement ms, Page page) {// 获取前端传入的分页参数Integer pageNum = (Integer) page.get("pageNo");Integer pageSize = (Integer) page.get("pageSize");// 处理分页逻辑int offset = (pageNum - 1) * pageSize;return super.SqlParserInterceptor(ms, new Page(offset, pageSize));}
}

4、正确的参数

假如在调用分页查询方法的时候没有传入Page对象或者是没有调用setRecordsTotal方法设置总条数,则分页查询不到数据。可以采用以下方式正确传参,具体代码如下:

// 分页查询方法
IPage<Test> pageTest = new Page<>(pageNo, pageSize);
// 设置总记录数
pageTest .setRecordsTotal(testMapper.selectCount(null));
// 查询
IPage<Test> pageResult = testMapper.selectPage(pageTest , null);

5、不同版本的配置文件

接下来我们看看不同版本的配置文件具体如何实现

3.4.0之前版本

在启动类中添加Bean,配置类代码如下:

/** Mybatis plus 分页插件 **/@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor = new PaginationInterceptor();// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false// paginationInterceptor.setOverflow(false);// 设置最大单页限制数量,默认 500 条,-1 不受限制paginationInterceptor.setLimit(-1);return paginationInterceptor;}

3.4.0之后版本

配置类代码如下

package com.cafeteria.reservation.admin.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MyBatisConfig {@Beanpublic MybatisPlusInterceptor paginationInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//这是分页拦截器PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();paginationInnerInterceptor.setOverflow(false);paginationInnerInterceptor.setMaxLimit(500L);mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
//设置请求的页面大于最大页后操作,true调回到首页,false继续请求默认false
// paginationInterceptor.setOverflow(false);//设置最大单页限制数量,默认500条,-1不受限制
//paginationInterceptor.setLimit(500);
//开启 count 的 join 优化,只针对部分 left joinreturn mybatisPlusInterceptor;}
}

完结

今天的内容就到这里,感觉对你有帮助,可以点击下方卡片,关注《coder练习生》

http://www.ds6.com.cn/news/57764.html

相关文章:

  • 橙色可以做哪些网站深度搜索
  • 手机网页自动跳转怎么处理深圳关键词优化报价
  • 个人工作室网站网站搭建源码
  • 新手引导做的差的网站常见的网络营销模式
  • 设计公司网站套餐seo在线工具
  • 嘉定北京网站建设网站建站方式有哪些
  • 鱼头seo软件工具站seo
  • 专门卖化妆品网站建设百度手机助手官网
  • erp外贸管理系统郑州seo顾问热狗hotdoger
  • 建筑设计公司名字seo中国
  • 梅河口做网站怎么让付费网站免费
  • 青海省网站建设平台搜索引擎优化的含义和目标
  • wordpress双站如何在百度发布文章
  • 医院网站制作设计常用的网络推广方法有
  • 岱山建设局网站网络营销师证
  • 网站优化升级怎么做网络营销的特征
  • 2022年全球3月解封成都seo整站
  • 电子商务网站开发形式网站优化策略分析论文
  • 网站建设 设计那种连接线厂家企业网站快速建站
  • 网站改域名如何做百度优化网站建设服务商
  • 家居设计网站推荐蓝牙耳机网络营销推广方案
  • 加强局网站建设上海seo搜索优化
  • 国外做任务赚钱的网站手机网页设计制作网站
  • 网站建设广州竞价广告是怎么推广的
  • 做网站选哪家公司好十大免费域名
  • 自做网站告白如何弄广州seo公司品牌
  • 网站模版如何建品牌策划方案怎么写
  • 网站建设自吸引客人的产品宣传句子
  • 有哪些做简历的好网站seo关键词优化软件合作
  • 如何用vs做网站开网站流程