插件
Interceptor
这是一个 MyBatis 拦截器插件,核心功能是:把 MyBatis 日志中带 ? 占位符的 SQL,还原成参数回填后的完整可执行 SQL,并打印执行耗时。开发调试时非常实用。
实现这个接口之后,实现它的intercept方法,拦截sql,去处理 SQL 执行,记录耗时,打印完整 SQL。
核心注解 @Intercepts,放在类上面,拦截 MyBatis 的 Executor.query() 和 Executor.update() 两个方法,即所有查询和更新操作都会被拦截。
1 | @Intercepts({ |
更多信息可以查看官方文档:https://mybatis.net.cn/configuration.html#plugins
文章作者: coder-xuyong
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 coder-xuyong!
相关推荐

2025-10-15
Mybatis快速入门
MyBatis 快速入门 MyBatis 的前身就是 iBatis ,是一个作用在数据持久层的对象关系映射(Object Relational Mapping,简称 ORM)框架。 什么是 MyBatisMyBatis 是一款持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 快速入门 这里,我将以一个入门级的示例来演示 Mybatis 是如何工作的。 注:本文后面章节中的原理、源码部分也将基于这个示例来进行讲解。 数据库准备在本示例中,需要针对一张用户表进行 CRUD 操作。其数据模型如下: 12345678910111213CREATE TABLE IF NOT EXISTS user ( id BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT CO...

2025-10-15
Mybatis原理
Mybatis 原理 Mybatis 的前身就是 iBatis ,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点,结合 Mybatis 底层源码分析,图文并茂的讲解 Mybatis 的核心工作机制。 Mybatis 生命周期 SqlSessionFactoryBuilderSqlSessionFactoryBuilder 的职责SqlSessionFactoryBuilder 负责创建 SqlSessionFactory 实例。SqlSessionFactoryBuilder 可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。 Configuration 类包含了对一个 SqlSessionFactory 实例你可能关心的所有内容。 SqlSessionFactoryBuilder 应用了建造者设计模式,它有五个 build 方法,允许你通过不同的资源创建 SqlSessionFactory 实例。 12345SqlSessionFa...

2026-08-18
MyBatisPlus核心功能
条件构造器在BaseMapper中,有一些Wrapper参数的方法,这就是复杂一点的where条件查询。复杂的条件查询会用到Wrapper类,以及它的各种子类,我们常用的就是QueryWrapper、UpdateWrapper和LambdaQueryWrapper。 QueryWrapper无论是修改、删除、查询,都可以使用QueryWrapper来构建查询条件。接下来看一些例子:查询:查询出名字中带o的,存款大于等于1000元的人。代码如下: 1234567891011@Testvoid testQueryWrapper() { // 1.构建查询条件 where name like "%o%" AND balance >= 1000 QueryWrapper<User> wrapper = new QueryWrapper<User>() .select("id", "username", "info", "bal...

2026-08-14
MyBatisPlus快速入门
官方文档https://baomidou.com/introduce/ 入门案例引入依赖12345<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version></dependency> 日志相关配置12345logging: level: com.itheima: debug # 设置项目包 com.itheima 及其子包的日志级别为 DEBUG(输出详细信息) pattern: dateformat: HH:mm:ss # 日志时间格式仅显示小时:分钟:秒(不显示毫秒和日期) 定义Mapper首先,在启动类上面配置@MapperScan(“path/xx”),用于扫描持久层。 1public interface UserMapper extends ...

2025-10-13
SpringBoot 之属性加载详解
加载 property 顺序Spring Boot 加载 property 顺序如下: Devtools 全局配置 (当 devtools 被激活 ~/.spring-boot-devtools.properties). 测试环境中的 @TestPropertySource 注解配置 测试环境中的属性 properties:@SpringBootTest 和 测试注解. 命令行参数 SPRING_APPLICATION_JSON 属性 ServletConfig 初始化参数 ServletContext 初始化参数 JNDI attributes from 通过 java:comp/env 配置的 JNDI 属性 Java 系统属性 (System.getProperties()) 操作系统环境比那里 RandomValuePropertySource 加载 random.* 形式的属性 jar 包外的 application-{profile}.properties 或 application-{profile}.yml 配置 jar ...

2025-10-02
Spring 依赖注入
Spring 依赖注入DI,是 Dependency Injection 的缩写,即依赖注入。依赖注入是 IoC 的最常见形式。依赖注入是手动或自动绑定的方式,无需依赖特定的容器或 API。 依赖注入 (Dependency Injection,简称 DI) 是一个过程,其中对象仅通过构造函数参数、工厂方法的参数或对象实例在构造或从工厂方法返回。然后容器在创建 bean 时注入这些依赖项。这个过程基本上是 bean 本身的逆过程(因此得名,控制反转),它通过使用类的直接构造或服务定位器模式自行控制其依赖项的实例化或位置。 使用 DI,代码更干净,当对象具有依赖关系时,解耦更有效。对象不查找其依赖项,也不知道依赖项的位置或类别。结果,您的类变得更容易测试,特别是当依赖关系在接口或抽象基类上时,它们允许在单元测试中使用存根或模拟实现。 容器全权负责组件的装配,它会把符合依赖关系的对象通过 JavaBean 属性或者构造函数传递给需要的对象。 DI 是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是...
评论
