news 2026/4/16 12:11:46

MyBatis Plus 中常用的插件列表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MyBatis Plus 中常用的插件列表

一、MyBatis Plus 官方插件列表

  1. 核心插件(InnerInterceptor 实现类)

    (1)分页插件

    PaginationInnerInterceptor

    (2)乐观锁插件

    OptimisticLockerInnerInterceptor

    (3)防止全表更新与删除插件

    BlockAttackInnerInterceptor

    (4)SQL 性能规范插件

    IllegalSQLInnerInterceptor

    (5)动态表名插件

    DynamicTableNameInnerInterceptor

    (6)多租户插件

    TenantLineInnerInterceptor

    (7)数据权限插件

    DataPermissionInterceptor// 已废弃,推荐使用 TenantLineInnerInterceptor 或自定义

    (8)字段加解密插件

    EncryptorInnerInterceptor// v3.5.0+ 版本提供

    (9)关联查询插件(已废弃)

    innerInterceptor(newJsqlParserCountOptimize())
  2. 其他重要插件和组件

    (10)SQL 注入器(不是插件,但功能类似)

    ISqlInjector
    • LogicSqlInjector - 逻辑删除注入器
    • DefaultSqlInjector - 默认注入器
    • 可自定义实现,用于注入自定义方法

    (11)主键生成器

    IdentifierGenerator
    • DefaultIdentifierGenerator - 默认(雪花算法)
    • CustomIdGenerator - 自定义
    • UUID - UUID 生成器

    (12)ID 类型处理器

    在这里插入代码片

    控制主键生成策略

    (13)元对象处理器

    MetaObjectHandler

    用于自动填充字段(如 create_time, update_time)

    (14)性能分析插件(已废弃,推荐使用 p6spy)

    PerformanceInterceptor// 已废弃

完整配置示例(包含所有可用插件)

@ConfigurationpublicclassMybatisPlusConfig{@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();// 1. 多租户插件(必须最先添加)interceptor.addInnerInterceptor(tenantLineInnerInterceptor());// 2. 动态表名插件interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor());// 3. 分页插件interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));// 4. 乐观锁插件interceptor.addInnerInterceptor(newOptimisticLockerInnerInterceptor());// 5. 字段加解密插件(v3.5.0+)// interceptor.addInnerInterceptor(new EncryptorInnerInterceptor());// 6. 防止全表更新与删除插件interceptor.addInnerInterceptor(newBlockAttackInnerInterceptor());// 7. SQL 性能规范插件interceptor.addInnerInterceptor(newIllegalSQLInnerInterceptor());returninterceptor;}// 多租户配置@BeanpublicTenantLineInnerInterceptortenantLineInnerInterceptor(){returnnewTenantLineInnerInterceptor(newTenantLineHandler(){@OverridepublicExpressiongetTenantId(){returnnewLongValue(1L);// 实际应从上下文获取}@OverridepublicStringgetTenantIdColumn(){return"tenant_id";}@OverridepublicbooleanignoreTable(StringtableName){return"sys_config".equals(tableName);// 忽略系统配置表}});}// 动态表名配置@BeanpublicDynamicTableNameInnerInterceptordynamicTableNameInnerInterceptor(){DynamicTableNameInnerInterceptorinterceptor=newDynamicTableNameInnerInterceptor();Map<String,TableNameHandler>handlerMap=newHashMap<>();handlerMap.put("order",(sql,tableName)->{// 动态表名逻辑returntableName+"_2024";});interceptor.setTableNameHandlerMap(handlerMap);returninterceptor;}// 自动填充处理器@BeanpublicMetaObjectHandlermetaObjectHandler(){returnnewMetaObjectHandler(){@OverridepublicvoidinsertFill(MetaObjectmetaObject){this.strictInsertFill(metaObject,"createTime",LocalDateTime.class,LocalDateTime.now());this.strictInsertFill(metaObject,"updateTime",LocalDateTime.class,LocalDateTime.now());}@OverridepublicvoidupdateFill(MetaObjectmetaObject){this.strictUpdateFill(metaObject,"updateTime",LocalDateTime.class,LocalDateTime.now());}};}// 自定义主键生成器@BeanpublicIdentifierGeneratoridGenerator(){returnnewCustomIdGenerator();}// 自定义 SQL 注入器@BeanpublicMybatisPlusPropertiesCustomizerplusPropertiesCustomizer(){returnplusProperties->plusProperties.getGlobalConfig().setSqlInjector(newMySqlInjector());}}// 自定义 ID 生成器classCustomIdGeneratorimplementsIdentifierGenerator{@OverridepublicNumbernextId(Objectentity){// 返回自定义 IDreturnSnowFlakeUtil.nextId();}@OverridepublicStringnextUUID(Objectentity){returnUUID.randomUUID().toString().replaceAll("-","");}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 13:41:36

大模型落地全景解析:从微调到企业级部署

一、大模型落地技术全景图graph TBA[大模型落地技术体系] --> B[模型优化]A --> C[应用开发]A --> D[基础设施]A --> E[企业集成]B --> B1[微调技术]B --> B2[提示工程]B --> B3[模型压缩]C --> C1[多模态应用]C --> C2[Agent系统]C --> C3[API服…

作者头像 李华
网站建设 2026/4/13 9:05:18

6.1 AI Agent核心原理:设计模式与架构分析

6.1 AI Agent核心原理:设计模式与架构分析 在前面的课程中,我们接触了各种AI工具和协议,如Cursor、Claude Code和MCP。这些工具背后的核心技术之一就是AI Agent。本节将深入探讨AI Agent的核心原理,分析其设计模式和架构,为你构建自己的智能代理系统奠定理论基础。 AI A…

作者头像 李华
网站建设 2026/4/15 9:50:10

MonkeyRunner图像匹配在自动化测试中的实战应用(图文完整版)

一、图像匹配工作原理 图像匹配技术通过像素级别的比对来识别界面元素&#xff0c;其核心流程如下所示&#xff1a; 该流程展示了从屏幕捕获到最终判断是否匹配的全过程&#xff0c;其中相似度阈值是决定匹配准确性的关键参数。 二、核心操作流程详解 完整的图像匹配操作遵循标…

作者头像 李华
网站建设 2026/4/12 12:30:54

7.1 工具整合:打通NotebookLM、大模型与Cursor的全链路

7.1 工具整合:打通NotebookLM、大模型与Cursor的全链路 在前几章的学习中,我们深入了解了AI编程工具、Agent系统和MCP协议。本节课我们将探讨如何整合不同的AI工具,构建一个完整的开发工作流。我们将重点学习如何打通NotebookLM、大语言模型和Cursor之间的全链路,实现从需…

作者头像 李华
网站建设 2026/4/15 23:25:20

高性能、动态、多架构的政务数据库审计和监测最佳实践指南

一、概要&#xff08;提示&#xff1a;本章节概览政务数据库风险监测的核心价值与落地成果。&#xff09;在数字政府建设的快速推进下&#xff0c;数据库已成为政务信息系统的核心支撑&#xff0c;其安全与可控性直接关系到公共数据资产与公民隐私保护。“知形-数据库风险监测系…

作者头像 李华