ebike-plus/ebike-operations/src/main/java/com/cdzy/operations/config/MyBatisFlexConfiguration.java
2025-11-27 16:58:22 +08:00

56 lines
2.0 KiB
Java

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;
}
}