package com.cdzy.operations.config; import com.cdzy.common.enums.EbikeContents; import com.cdzy.operations.component.EbikeTenantFactory; import com.mybatisflex.annotation.KeyType; import com.mybatisflex.core.FlexGlobalConfig; import com.mybatisflex.core.audit.AuditManager; import com.mybatisflex.core.dialect.DbType; import com.mybatisflex.core.keygen.KeyGenerators; import com.mybatisflex.core.tenant.TenantFactory; import com.mybatisflex.core.tenant.TenantManager; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Slf4j @Configuration public class MyBatisFlexConfiguration { @PostConstruct public void init() { //开启审计功能 AuditManager.setAuditEnable(true); AuditManager.setMessageCollector(auditMessage -> log.info("{},{}ms", auditMessage.getFullSql(), auditMessage.getElapsedTime()) ); log.info("开始初始化mybatis-flex全局配置"); FlexGlobalConfig globalConfig = FlexGlobalConfig.getDefaultConfig(); //全局ID生成策略配置 FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig(); keyConfig.setKeyType(KeyType.Generator); keyConfig.setValue(KeyGenerators.snowFlakeId); keyConfig.setBefore(true); globalConfig.setKeyConfig(keyConfig); globalConfig.setTenantColumn(EbikeContents.TENANT_ID); globalConfig.setLogicDeleteColumn(EbikeContents.LOGIC_DELETE); globalConfig.setDbType(DbType.POSTGRE_SQL); globalConfig.setNormalValueOfLogicDelete(Boolean.FALSE); globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE); log.info("MyBatis-Flex 全局配置完成"); } @Bean public TenantFactory tenantFactory() { log.info("开始初始化租户工厂"); EbikeTenantFactory factory = new EbikeTenantFactory(); TenantManager.setTenantFactory(factory); return factory; } }