当前位置: 首页 > news >正文

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("-","");}}
http://www.cnnetsun.cn/news/83922.html

相关文章:

  • 转录组研究攻略|常见可视化结果解读
  • 新增AI引擎!快快网络联合集美大学共建工业智能与网络安全创新实验室
  • 5.3 从零构建MCP Server:实现文件处理与数据库访问
  • PapersGPT for Zotero 完整安装与使用指南:让文献管理更智能
  • 7.3 任务分解与管理:利用Cursor Memory Bank和Claude Code自定义命令
  • 中美文化对 AI 意识觉醒的根本差异:文明基因与 AGI 时代的未来路径
  • 豆包AI手机动了谁的“生态命门”?
  • 万字长文,保姆级教程!从零教你优雅开发复杂AI Agent,从入门到精通,看这篇就够了!
  • 标注好的胃病识别数据集,可识别食管炎,胃炎,胃出血,健康,息肉,胃溃疡等常见疾病,支持yolo, coco json,pascal voc xml格式的标注
  • 轻松上手:零基础使用AI智能图表工具制作专业可视化图表
  • 201React-Query:useQuery基本使用
  • 开源可定制的订水小程序系统详解 带完整的搭建部署教程以及搭建指南
  • Qwen-Image-Edit-2509实现任意尺寸图像智能编辑
  • 收藏!企业AI转型的真相:88%已应用,但93%未规模化,问题出在哪?
  • 4步构建高性能SVG动画:Glide与Lottie的深度集成方案
  • WordPress编辑器优化终极指南:让Gutenberg加速运行
  • Qwen3-VL-30B部署实战:GPU配置与推理优化
  • (N_121)基于微信小程序网上书城系统
  • OpenXR Toolkit:3大核心功能让你的VR应用性能翻倍
  • Web Service 接口测试,So easy~
  • Qwen3-VL-30B部署全指南:GPU配置与推理优化
  • Qwen3-8B大模型快速上手与部署实践
  • 开源大模型新选择:Anything-LLM镜像在GPU算力环境下的性能优化
  • PaddleDetection + Dify智能体平台:打造自动化目标检测SaaS服务
  • AIGC 商用实战派:集之互动用 “高可控” 接住品牌真需求
  • Go语言结构体
  • 计算机大学生找工作:选网络安全,比做传统程序员更 “香” 的 5 个核心理由
  • AI产业格局生变,家居服企业的“智”胜关键在哪?
  • COLMAP动态干扰消除:从问题诊断到智能解决方案
  • SGMICRO圣邦微 SGM2006-2.8XN5/TR SOT23-5 线性稳压器(LDO)