news 2026/6/20 1:03:14

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/6/18 18:16:30

6.2 多Agent协作与任务流编排

6.2 多Agent协作与任务流编排 在上一节课中,我们学习了AI Agent的核心原理和复杂任务自动化的设计模式。本节课我们将深入探讨多Agent系统中的协作机制和任务流编排技术,这是构建复杂AI应用的关键技术之一。 多Agent系统概述 多Agent系统(Multi-Agent System, MAS)是由多个…

作者头像 李华
网站建设 2026/6/16 2:47:12

6.2 架构洞察:逆向工程Claude Code与Codex

6.2 架构洞察:逆向工程Claude Code与Codex 在上一节中,我们深入探讨了AI Agent的核心原理和架构设计。现在,我们将通过逆向工程的方法,分析两个业界领先的AI编程工具——Claude Code和OpenAI Codex的架构设计和实现原理,从中汲取经验,为构建自己的AI Agent系统提供参考。…

作者头像 李华
网站建设 2026/6/19 12:40:51

6.4 实战项目:基于Agent内核构建Code Review智能体

6.4 实战项目:基于Agent内核构建Code Review智能体 在前三节课中,我们学习了AI Agent的核心原理、多Agent协作机制以及Claude Code和Codex的架构分析。本节课我们将通过一个完整的实战项目,构建一个基于Agent内核的Code Review智能体,深入实践前面学到的知识。 项目概述 …

作者头像 李华
网站建设 2026/6/19 11:41:30

SAP 销售凭证中利润中心的自动维护

结论&#xff1a;无维护明细字段&#xff08;profit_ctr&#xff09;时根据仓去匹配物料主数据配置的利润中心现象&#xff1a;调用bapi SD_SALESDOCUMENT_CREATE 时没有维护字段值 profit_ctr &#xff0c;生成的销售凭证有利润中心。VA03:是根据仓维护的物料主数据自动匹配的…

作者头像 李华
网站建设 2026/6/19 11:25:05

[N_121]基于微信小程序网上书城系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和管理后台两部分&a…

作者头像 李华
网站建设 2026/6/19 10:11:31

Zabbix问题解决后状态未自动转为“已解决”

Zabbix问题解决后状态未自动转为“已解决”&#xff0c;核心原因多是触发器未生成正常事件、触发器配置限制、服务或监控项异常等。可按从简单到复杂的顺序逐步排查&#xff0c;具体方案如下&#xff1a; 确认问题真的恢复且触发器能检测到正常状态 Zabbix默认只有当触发器状态…

作者头像 李华