news 2026/6/15 17:38:36

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/15 9:25:43

5.4 知识增强实战:将MCP Server集成到AI工具中

5.4 知识增强实战:将MCP Server集成到AI工具中 在前三节中,我们深入了解了MCP协议的核心概念,并从零开始构建了一个功能全面的MCP Server。现在,我们将进入实战阶段,学习如何将MCP Server集成到AI工具中,为AI助手提供实时、准确的本地上下文信息,显著提升AI编程工具的能…

作者头像 李华
网站建设 2026/6/14 17:09:34

什么是广告欺诈,该如何应对?

数字广告产业每年投入巨大&#xff0c;广告欺诈也随之迅速扩张&#xff0c;持续侵蚀企业投放预算和投资回报率。欺诈者利用自动化工具、虚假流量和复杂网络环境&#xff0c;制造虚假点击、展示及转化行为&#xff0c;使广告商面临日益严峻的监测与防御挑战。 我们为广告监控与…

作者头像 李华
网站建设 2026/6/15 12:29:49

Seed-Coder-8B-Base与SonarQube智能集成实践

Seed-Coder-8B-Base与SonarQube智能集成实践 在金融系统的一次紧急上线前&#xff0c;开发团队卡在了最后一步&#xff1a;SonarQube 报告中连续弹出 17 条“潜在空指针解引用”警告。资深工程师知道问题不难&#xff0c;但每条都要手动补上判空逻辑、写注释、跑测试——这本该…

作者头像 李华
网站建设 2026/6/15 9:08:04

ACE-Step:开源音乐生成模型快速上手指南

ACE-Step&#xff1a;开源音乐生成模型快速上手指南 在短视频、播客和独立游戏内容井喷的今天&#xff0c;背景音乐的需求量呈指数级增长。但专业作曲成本高、周期长&#xff0c;而传统“AI 作曲”工具又往往输出碎片化、缺乏结构感——直到 ACE-Step 的出现。 这款由 ACE St…

作者头像 李华
网站建设 2026/6/15 14:03:51

Blender中的常用风格插件推荐

原创声明&#xff1a;本文为原创内容&#xff0c;未经授权&#xff0c;请勿转载。 Blender 作为一款强大的开源 3D 创作软件&#xff0c;不仅提供了丰富的建模、渲染和动画工具&#xff0c;还拥有一个庞大的插件生态系统。通过插件&#xff0c;Blender 用户可以扩展软件功能&am…

作者头像 李华
网站建设 2026/6/15 13:39:45

SENAITE LIMS 实验室管理系统:从零开始的完整安装配置指南

引言 【免费下载链接】senaite.lims SENAITE Meta Package 项目地址: https://gitcode.com/gh_mirrors/se/senaite.lims SENAITE LIMS 是一款开源的实验室信息管理系统&#xff0c;专为现代实验室环境设计。它能帮助实验室管理者高效处理样本分析、用户管理、仪器监控等…

作者头像 李华