package com.cdzy.staff.config; import com.cdzy.common.enums.EbikeContents; import com.cdzy.staff.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 org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author attiya */ @Configuration public class MyBatisFlexConfiguration { private static final Logger logger = LoggerFactory .getLogger("mybatis-flex-sql:"); public MyBatisFlexConfiguration() { //开启审计功能 AuditManager.setAuditEnable(true); //设置 SQL 审计收集器 AuditManager.setMessageCollector(auditMessage -> logger.info("{},{}ms", auditMessage.getFullSql() , auditMessage.getElapsedTime()) ); FlexGlobalConfig globalConfig = FlexGlobalConfig.getDefaultConfig(); //全局ID生成策略配置 FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig(); keyConfig.setKeyType(KeyType.Generator); keyConfig.setValue(KeyGenerators.snowFlakeId); keyConfig.setBefore(true); globalConfig.setTenantColumn(EbikeContents.TENANT_ID); globalConfig.setLogicDeleteColumn(EbikeContents.LOGIC_DELETE); globalConfig.setKeyConfig(keyConfig); //方言配置 globalConfig.setDbType(DbType.POSTGRE_SQL); // 关键配置 //设置数据库正常时的值 globalConfig.setNormalValueOfLogicDelete(Boolean.FALSE); //设置数据已被删除时的值 globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE); } /** * 详细的租户工厂配置 */ @Bean public static TenantFactory tenantFactory() { logger.info("开始初始化租户工厂..."); EbikeTenantFactory factory = new EbikeTenantFactory(); TenantManager.setTenantFactory(factory); return new EbikeTenantFactory(); } }