Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MyBatis-plus一些总结感受

MyBatis-plus一些总结感受

作者头像
用户4235284
发布于 2022-12-03 05:05:20
发布于 2022-12-03 05:05:20
99600
代码可运行
举报
文章被收录于专栏:后端学习之道后端学习之道
运行总次数:0
代码可运行

因为做的是门户类型的项目.这两天测试给提了个问题,在分页的时候,直接从地址栏修改了一个超出最大页码的页数,返回的结果竟然是空白页面,平时前后端分离的时候,没有碰到过,现在有两种解决方式:

  1. 后端处理
  2. 前端调用接口的时候根据maxPage进行判断

当然第二种处理方式比较简单,但是依稀记得以前用的分页pageHelper插件超出最大值时会自动判断,故做一下研究 通过查询mybatis-plus的官网,MybatisPlusInterceptor 其中的自动分页是比较符合的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
自动分页: PaginationInnerInterceptor
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
多租户: TenantLineInnerInterceptor
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
动态表名: DynamicTableNameInnerInterceptor
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
乐观锁: OptimisticLockerInnerInterceptor
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sql 性能规范: IllegalSQLInnerInterceptor
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
防止全表更新与删除: BlockAttackInnerInterceptor

通过重写PaginationInnerInterceptor的方法,可以实现的有:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
overflow 溢出总页数后是否进行处理(我们需要的东西),
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
maxLimit 	单页分页条数限制(默认无限制),
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dbType 数据库类型(根据类型获取应使用的分页方言) ,
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dialect 方言实现类

下面的代码是超出最大页返回第一页

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        //  插件
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 分页插件
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        // 设置最大分页数
        paginationInnerInterceptor.setMaxLimit(100L);
        // 是否对超过最大分页时做溢出处理
        paginationInnerInterceptor.setOverflow(true);
        // 设置数据库类型
        paginationInnerInterceptor.setDbType(DbType.MARIADB);
        //paginationInnerInterceptor.setProperties();
       // paginationInnerInterceptor.setDialect();
        //paginationInnerInterceptor.setOptimizeJoin();
        // 添加分页插件
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        return interceptor;
    }

而想返回最后一页的话,要重写handlerOverflow方法

  1. 新建NewPaginationInnerInterceptor 类,重写handlerOverflow方法:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    /**
     * @author Tony brings water
     * @date 2021/8/18 14:10
     * 分页删除某页唯一记录后,自动跳转至前一页(默认实现是跳转至首页)
     */
    @Data
    @NoArgsConstructor
    public class NewPaginationInnerInterceptor extends PaginationInnerInterceptor {
    private DbType dbType;
    public NewPaginationInnerInterceptor(DbType dbType) {
    this.dbType = dbType;
    }
    @Override
    protected void handlerOverflow(IPage<?> page) {
    //查询前一页
    page.setCurrent(page.getCurrent() - 1);
    }
    }
  1. 修改MyBatis Plus配置,使用NewPaginationInnerInterceptor:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Configuration
    public class MybatisConfig {
     @Bean
     public MybatisPlusInterceptor mybatisPlusInterceptor() {
     MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
     //设置分页插件属性:请求页超出范围时,返回前一页
     NewPaginationInnerInterceptor paginationInnerInterceptor = new NewPaginationInnerInterceptor
     paginationInnerInterceptor.setOverflow(true);
     interceptor.addInnerInterceptor(paginationInnerInterceptor);
     return interceptor;
     }
    }

但是在写的时候,突然发现idea没有提示,自己写上去也是报错的...后来发现mybatis-plus插件版本要求3.4.0以上,而项目中的是3.2的版本 项目开始的时候3.4.0还未发布, 查询了一下3.4之前的版本设置,跟现有版本的实现逻辑不一样,只能够设置超出跳转第一页... 幸好前端也可以解决,留下的疑问,只好后面如果碰到再解决吧

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
用户7954602
2024/11/09
3830
深入 MyBatis-Plus 插件:解锁高级数据库功能
mybatis-plus动态表名
却是平流无石处,时时闻说有沉沦。——唐•杜荀鹤 配置 @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTa
阿超
2022/08/16
1.1K0
mybatis-plus动态表名
MyBatis-Plus分页插件的配置和使用
由于版本的区别更换版本如下:此前版本无法引用MybatisPlusInterceptor 故更换使用3.5.1
默 语
2024/11/20
9040
MyBatis-Plus分页插件的配置和使用
若依vue整合mybatis-plus
今天用若依vue整合mybatis-plus,按照官方的那个整合教程走,结果运行项目的时候报错了,于是我上gitee上参考了别人的若依整合mybatis-plus的项目,然后修改了下配置文件,就能正常运行了,下面是整合步骤。
你的明明呐丶
2022/09/28
3.8K0
Mybatis-Plus插件扩展
MybatisPlusInterceptor是核心插件,目前代理了Executor#query 和 Executor#update 和 StatementHandler#prepare 方法
别团等shy哥发育
2023/02/25
1.2K0
Mybatis-Plus插件扩展
Mybatis-Plus 插件
上一篇文章:(21条消息) MybatisPlus 条件构造器和常用接口_一切总会归于平淡的博客-CSDN博客
叫我阿杰好了
2022/11/07
7910
Mybatis-Plus 插件
MyBatis-Plus 之分页查询
@MapperScan(basePackages = "com.kaven.mybatisplus.dao")这个一定要加上。
全栈程序员站长
2022/09/05
1.4K0
MyBatis-Plus 之分页查询
六.SpringBoot配置分页插件
一.SpringBoot配置分页插件 1.新建一个MybatisPlusConfig配置文件 package com.tms.tblog.infrastructure.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extens
十分钟空间
2022/08/17
6350
六.SpringBoot配置分页插件
mybatis-plus 应用1:【默认分页插件和自定义分页插件实现】
mapper.xml的实现方式是一模一样的,使用分页插件的话,不需要在sql中写 limit和offset信息会有插件自动注入
danielxiao
2022/08/16
3.9K0
MyBatis-Plus 快速开始及详测 SpringBoot 集成Mybatis-Plus
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
宁在春
2022/10/31
6510
MyBatis-Plus  快速开始及详测 SpringBoot 集成Mybatis-Plus
mybatis-plus自动填充
对应的值在com.baomidou.mybatisplus.annotation.FieldFill这个枚举里
阿超
2022/08/16
9170
mybatis-plus自动填充
MyBatis-Plus 插件
# MyBatis-Plus 插件🔌 分页插件 添加配置类 测试 xml自定义分页 UserMapper UserMapper.xml中编写SQL 测试 乐观锁 场景 乐观锁与悲观锁 模拟修改冲突 乐观锁实现流程 MyBatis-Plus实现乐观锁 # 分页插件 MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能 # 添加配置类 /** * @author frx * @version 1.0 * @date 2022/4/19 11:11 */ @Configuration
用户9615083
2022/12/25
4590
MyBatis-Plus 插件
mybatis-plus
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
楠羽
2022/11/18
8780
mybatis-plus
mybatisPlus分页配置操作
在MybatisPlus中的查询语句是怎么实现的,我们可以通过两种方式实现查询语句
一个风轻云淡
2023/10/15
1.2K0
mybatisPlus分页配置操作
SpringBoot--MyBatis-Plus
使用MyBatis进行数据库操作已经很方便了,MyBatis-Puls对MyBatis做了进一步的简化,用于常见的CURD操作
aruba
2022/06/05
4070
SpringBoot--MyBatis-Plus
Mybatis-plus基本配置类
MybatisPlusConfig import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import c
benym
2023/05/18
4860
MyBatis系列之分页插件及问题
无论是C端产品页面,还是后台系统页面,不可能一次性将全部数据加载出来。后台系统一般都是PC端登录,用Table组件(如Ant Design Table)渲染展示数据,可点击列表的下一页(或指定某一页)查看数据。C端产品如App,在下滑时可查看更多数据,看起来像是一次性加载数据,实际上也是分批请求后台系统获取数据。而这,就是分页功能。
johnny666
2024/09/17
2160
Mybatis Plus 3.4版本之后分页插件的使用
MybatisPlusInterceptor是一系列的实现InnerInterceptor的拦截器链,也可以理解为一个集合。可以包括如下的一些拦截器
字母哥博客
2021/01/29
6.1K0
解决mybatis-plus分页查询不生效,配置分页拦截器
今天在使用mybatis-plus的分页查询的时候,发现分页效果并没有实现,一次性将表的全部数据都加载了出来,最后查看官方文档发现是自己没有配置分页拦截器。 我的mybatisplus版本如下:
别团等shy哥发育
2023/02/25
7.4K0
解决mybatis-plus分页查询不生效,配置分页拦截器
【MyBatis-Plus】MyBatis-Plus基本操作快速入门
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
陶然同学
2023/02/27
8680
【MyBatis-Plus】MyBatis-Plus基本操作快速入门
相关推荐
深入 MyBatis-Plus 插件:解锁高级数据库功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验