69 lines
2.3 KiB
Java
69 lines
2.3 KiB
Java
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();
|
|
}
|
|
|
|
} |