Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mybatis拦截器初探

mybatis拦截器初探

作者头像
蛋蛋编程手记
发布于 2023-02-25 09:01:52
发布于 2023-02-25 09:01:52
2850
举报
文章被收录于专栏:蛋蛋编程手记蛋蛋编程手记

最近项目里用到了mybatis的拦截器,然后想到之前面试被问过这个问题,当时没有回答上来,于是就好好的研究了一下。

项目里面是在分页的流程上使用了拦截器,通过配置mybatis拦截器简化了分页代码的编写过程。

我们知道要做一个分页需要有两步sql查询。首先根据条件查询总条数,然后查询分页的结果集合,然后后端将数据组织成一个分页结果对象。前端那边则根据后端返回的分页结果组织页码列表以及当前页数据展示。

常规思路就是在mapper接口中写两个方法,在xml中写两个方法,然后再service中组织最终的结果。

通过mybatis的拦截器,我们省略掉了service的数据组织过程,以及mapper中查询总数方法的定义。

也就是说我们只需要定义一个查询数据的方法,它返回最终的分页对象,以及xml里面查总数和查具体数据集合的sql。至于为什么不把查总数也省略掉,是因为查总数自己手写可以会有一些看得见的优化。

当然这个技术还有很多其他的用法,比如分表分库操作,统计sql执行时间等等,后面有时间蛋蛋会继续分享的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 蛋蛋编程手记 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MyBatis Plus 快速入门
    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus最直接的优点有:
用户10175992
2022/11/15
3980
用了这么多年分页PageHelper,才发现自己一直用错了!
在实际项目运用中,PageHelper的使用非常便利快捷,仅通过PageInfo + PageHelper两个类,就足以完成分页功能,然而往往这种最简单的集成使用方式,却在很多实际应用场景中,没有得到充分的开发利用.
业余草
2020/10/29
10.4K0
mybatisPlus分页配置操作
在MybatisPlus中的查询语句是怎么实现的,我们可以通过两种方式实现查询语句
一个风轻云淡
2023/10/15
1.3K0
mybatisPlus分页配置操作
Mybatis源码学习(四)拦截器与插件原理
回顾前几文加载mybatis时,会通过sqlSessionFactoryBuilder的build方法对xml文件进行解析,解析成document树后,再依次对树中的XNode结点进行解析,如xml配置中的plugins、environments、mappers、typeHandlers等基础配置信息,初始化后赋值给configuration,解析结束。
虞大大
2020/09/01
8120
Mybatis拦截器做数据范围权限DataScope
1、定义Mybatis拦截器DataScopeInterceptor,用于每次拦截查询sql语句,附带数据范围权限sql条件
有一只柴犬
2024/01/25
4990
MyBatis的分页实现原理
MyBatis是一种流行的Java持久化框架,用于简化数据库访问的开发过程。在实际开发中,分页功能是非常常见的需求之一。MyBatis提供了一种简单而有效的方式来实现分页,同时还可以结合分页插件来增强分页功能。本文将详细介绍MyBatis的分页实现原理以及分页插件的工作原理。
疯狂的KK
2023/07/02
3.3K0
Mybatis分页拦截器
5.注意,参数都要封装到对象里,不能用string,int等基本类型,因为在拦截器中获取参数时用的是getter,基本类型数据没有getter和setter
IT云清
2019/01/22
2.3K0
Mybatis分页插件PageHelper的配置和使用方法
前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页。 前端分页 一次性请求数据表格中的所有记录(ajax),然后在前端缓存并且计算count和分页逻辑,一般前端组件(例如dataTable)会提供分页动作。 特点是:简单,很适合小规模的web平台;当数据量大的时候会产生性能问题,在查询和网络传输的时间会很长。 后端分页 在ajax请求中指定页码(pageNum)和每页的大小(pageSize),后端查询出当页的数据返回,前端只负责
用户1225216
2018/03/05
5.2K0
【源码免费下载】SpringBoot整合Spring+SpringMVC+MyBatisPlus案例:图书管理系统
只是上述调用MyBatisPlus中提供的分页功能相关的方法还无法真正实现分页功能,MyBatisPlu是通过拦截器来实现分页的,所以需要配置拦截器。
.29.
2023/10/17
4920
【源码免费下载】SpringBoot整合Spring+SpringMVC+MyBatisPlus案例:图书管理系统
mybatisplus自定义拦截器_springboot自定义拦截器
通过拦截器可以拦截四大核心对象中的其中一个,我下文中拦截的是Executor核心对象,然后对这个核心对象的update方法进行了拦截,再结合反射,在每次更新的时候都动态的给sql加上一个更新人操作,在每次插入的时候都动态的给sql加上一个创建人操作。下文中的拦截器主要是在更新或者插入的时候,给sql语句多传递一个参数。 我们还可以通过拦截StatementHandler核心对象修改sql语句,还可以通过拦截其它两个核心对象达到某些目的。但是目前只掌握拦截Executor核心对象给sql语句动态的增加参数就行了。
全栈程序员站长
2022/09/30
5.3K0
mybatisplus自定义拦截器_springboot自定义拦截器
MyBatis与MyBatis-Plus的区别?
MyBatis和MyBatis-Plus都是Java语言中非常常用的ORM框架,二者有以下区别:
GeekLiHua
2025/01/21
2670
Java-Mybatis
(1)优点: ① 基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 ② 与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; ③ 很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 ④ 能够与Spring很好的集成; ⑤ 提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
知识浅谈
2021/11/02
9640
mybatis拦截器不能拦截哪个类_信号发生器的使用方法总结
MyBatis拦截器可以做的工作:SQL修改,分页操作,数据过滤,SQL执行时间性能监控等。
全栈程序员站长
2022/09/30
1.4K0
mybatis拦截器不能拦截哪个类_信号发生器的使用方法总结
mybatis拦截器详解_短信拦截器
  拦截器的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法。Mybatis拦截器设计的一个初衷就是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑。打个比方,对于Executor,Mybatis中有几种实现:BatchExecutor、ReuseExecutor、SimpleExecutor和CachingExecutor。这个时候如果你觉得这几种实现对于Executor接口的query方法都不能满足你的要求,那怎么办呢?是要去改源码吗?当然不。我们可以建立一个Mybatis拦截器用于拦截Executor接口的query方法,在拦截之后实现自己的query方法逻辑,之后可以选择是否继续执行原来的query方法。
全栈程序员站长
2022/09/30
1.8K0
Mybatis拦截器
Mybatis拦截器设计的初衷就是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑。通过Mybatis拦截器我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法。所以Mybatis拦截器的使用范围是非常广泛的。
全栈程序员站长
2022/09/16
1K0
mybatis拦截器执行顺序配置_java拦截器使用详解
最近项目用上了mybatis, 但是想像hibernate那样能打印sql, 于是写了个基于mybatis拦截器的sql打印, 参考这个https://blog.22xcode.com/post/78
全栈程序员站长
2022/10/04
2K0
MyBatis插件原理分析,看完感觉自己better了
在Mybatis中最出名的就是PageHelper 分页插件,下面我们先来使用一下这个分页插件。
田维常
2020/12/30
4110
springboot整合mybatis分页插件PageHelper实战
https://www.cnblogs.com/xifengxiaoma/p/11027551.html
全栈程序员站长
2022/11/03
1.6K0
mybatis练习题
1) Mybatis 和 hibernate 不同,它不完全是一个ORM 框架,因为
张哥编程
2024/12/13
2270
MyBatis拦截器(Interceptor)的理解与实践
在MyBatis中,拦截器(Interceptor)是一种强大的机制,它允许开发者在执行SQL语句或处理结果集的过程中介入,并且可以进行自定义的处理逻辑。本文将深入探讨MyBatis拦截器的基本概念、工作原理,以及如何在实际项目中应用拦截器来解决常见问题和优化性能。
IT_陈寒
2025/06/01
9200
MyBatis拦截器(Interceptor)的理解与实践
相关推荐
MyBatis Plus 快速入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档