MyBatisPlus常用配置有哪些?第三篇你都看了吗?

62 次浏览次阅读
没有评论

MyBatisPlus常用配置深度解析:第三篇核心技巧全掌握

如果你已经看过前两篇MyBatisPlus实战指南,那么恭喜你完成了ORM框架的筑基修炼!本篇将带你直击开发中最核心的配置实战,从全局参数到CRUD策略,从分页插件到逻辑删除,那些文档里不会告诉你的最佳实践都在这里。准备好解锁MyBatisPlus的完整战力了吗?

一、全局配置:框架运转的神经中枢

1.1 核心参数配置

@Configuration
public class MybatisPlusConfig {
    
    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig config = new GlobalConfig()
            .setBanner(false) // 关闭启动Banner
            .setDbConfig(new GlobalConfig.DbConfig()
                .setColumnFormat("`%s`")  // 字段自动转义
                .setTablePrefix("tbl_")    // 统一表前缀
            );
        return config;
    }
}

关键配置解析:

  • tablePrefix:动态表名前缀,完美支持分表场景
  • columnFormat:字段格式化,防止SQL保留字冲突
  • idType:全局ID生成策略(推荐ASSIGN_ID)

1.2 SQL执行监控

启用性能分析插件拦截慢查询:

<property name="configuration">
  <bean class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    <property name="plugins">
      <array>
        <bean class="com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor">
          <property name="maxTime" value="1000"/>
          <property name="format" value="true"/>
        </bean>
      </array>
    </property>
  </bean>
</property>

二、CRUD策略配置:让基础操作更智能

2.1 字段自动填充

实现MetaObjectHandler处理审计字段:

public class AutoFillHandler implements MetaObjectHandler {
    
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }
}

2.2 逻辑删除实战

配置逻辑删除与数据恢复方案:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted   逻辑删除字段
      logic-not-delete-value: 0     未删除值
      logic-delete-value: 1         删除值

注意事项:

  • 需在实体字段添加@TableLogic注解
  • 查询条件自动过滤已删除数据
  • 支持deleteById物理删除(需特殊处理)

三、高阶插件配置:解锁企业级功能

3.1 分页插件深度优化

@Bean
public MybatisPlusInterceptor paginationInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    PaginationInnerInterceptor pagination = new PaginationInnerInterceptor();
    pagination.setOptimizeJoin(true);  // 优化关联查询
    pagination.setMaxLimit(1000L);     // 单页最大记录数
    interceptor.addInnerInterceptor(pagination);
    return interceptor;
}

3.2 多租户方案实现

通过TenantLineInnerInterceptor实现数据隔离:

public class TenantInterceptor extends TenantLineInnerInterceptor {
    
    public TenantInterceptor(String tenantIdColumn) {
        this.setTenantLineHandler(new TenantLineHandler() {
            @Override
            public Expression getTenantId() {
                return new StringValue(RequestContext.getTenantId());
            }
            
            @Override
            public boolean ignoreTable(String tableName) {
                return !"user".equals(tableName); // 指定需要过滤的表
            }
        });
    }
}

四、生产环境最佳实践

4.1 配置优先级管理

  1. 注解配置 > XML配置 > YAML配置
  2. 局部配置覆盖全局配置
  3. 测试环境开启SQL日志,生产环境关闭

4.2 性能调优参数

  • mapper-locations:指定XML路径减少扫描耗时
  • default-enum-type-handler:枚举转换优化
  • aggressive-lazy-loading:延迟加载策略

最后提醒:记得结合第二篇的注解使用技巧,配置与注解双剑合璧才能真正发挥MyBatisPlus的全部威力。现在就去检查你的项目配置,让这些最佳实践为你的系统保驾护航!

正文完
 0

辉哥

一言一句话
-「
最新文章
🚀 CentOS 7 稳定安装 Docker 部署 searxng(国内可用)

🚀 CentOS 7 稳定安装 Docker 部署 searxng(国内可用)

事例:CentOS 7 (Core)。 ⚠️ 关键问题是: 我们走 CentOS 7 专用 + 阿里云镜像稳定...
TikTok直播能赚钱吗?赚到的美金怎么提现?

TikTok直播能赚钱吗?赚到的美金怎么提现?

TikTok直播能赚钱吗?赚到的美金怎么提现详解(2026最新) TikTok作为全球最火的短视频平台,不仅是...
京东618消费券什么时候发?怎么正确使用?

京东618消费券什么时候发?怎么正确使用?

京东618消费券什么时候发?怎么正确使用? 每年京东618都是全年最值得囤货的购物节点,海量消费券直接让到手价...
淘宝网店可以从哪里购买?平台靠谱吗?

淘宝网店可以从哪里购买?平台靠谱吗?

淘宝网店可以从哪里购买?平台靠谱吗? 在电商时代,越来越多的人希望通过淘宝开店实现创业梦想。但从零开始建店需要...
淘宝全球购店铺如何转让?具体操作步骤是什么?

淘宝全球购店铺如何转让?具体操作步骤是什么?

淘宝全球购店铺如何转让?具体操作步骤是什么? 近年来,跨境电商快速发展,淘宝全球购作为阿里巴巴旗下重要的跨境平...
出售淘宝三钻店铺要什么条件?流程复杂吗?

出售淘宝三钻店铺要什么条件?流程复杂吗?

出售淘宝三钻店铺要什么条件?流程复杂吗? 在电商创业热潮中,很多新手卖家都希望快速起步,避免从零开始漫长的信誉...
2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗?

2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗?

2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗? 2026年,淘宝平台竞争更加激烈,很多新手创业者选择直接接...
淘宝闪购入口在哪里?免单玩法怎么操作?

淘宝闪购入口在哪里?免单玩法怎么操作?

淘宝闪购入口在哪里?免单玩法怎么操作? 淘宝闪购是淘宝App上的一级核心频道,主打限时优惠、品牌好物和快速送达...
2026年1688店铺怎么转让?开一家1688要多少钱?

2026年1688店铺怎么转让?开一家1688要多少钱?

2026年1688店铺怎么转让?开一家1688要多少钱? 在2026年,1688作为阿里巴巴旗下的B2B批发平...
淘宝闪购免单卡和请客卡怎么获得?

淘宝闪购免单卡和请客卡怎么获得?

淘宝闪购免单卡和请客卡怎么获得? 在淘宝购物时,最让人兴奋的莫过于各种省钱福利,尤其是闪购频道的免单卡和请客卡...
2026年淘宝开店必须实名认证吗?在哪里查看认证?

2026年淘宝开店必须实名认证吗?在哪里查看认证?

2026年淘宝开店必须实名认证吗?在哪里查看认证? 2026年想在淘宝开店的卖家越来越多,但很多人对实名认证规...