MyBatis Plus 中常用的插件列表
2026/5/7 18:42:04 网站建设 项目流程

一、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("-","");}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询