You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.8 KiB
Java
70 lines
2.8 KiB
Java
package com.glxp.api.config;
|
|
|
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
|
import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
|
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
|
import com.glxp.api.handler.MybatisDmHandler;
|
|
import org.apache.ibatis.session.SqlSessionFactory;
|
|
import org.mybatis.spring.annotation.MapperScan;
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
import org.springframework.boot.jdbc.DataSourceBuilder;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Primary;
|
|
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
|
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
|
|
|
import javax.sql.DataSource;
|
|
|
|
@Configuration
|
|
// 扫描 Mapper 接口并容器管理
|
|
@MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
|
|
public class MasterDataSourceConfig {
|
|
|
|
static final String PACKAGE = "com.glxp.api.dao";
|
|
static final String MAPPER_LOCATION = "classpath:mybatis/mapper/*/*.xml";
|
|
|
|
@Bean(name = "masterDataSource")
|
|
@ConfigurationProperties(prefix = "spring.datasource")
|
|
@Primary
|
|
public DataSource masterDataSource() {
|
|
return DataSourceBuilder.create().build();
|
|
}
|
|
|
|
@Bean(name = "masterTransactionManager")
|
|
@Primary
|
|
public DataSourceTransactionManager masterTransactionManager() {
|
|
return new DataSourceTransactionManager(masterDataSource());
|
|
}
|
|
|
|
|
|
@Configuration
|
|
@ConfigurationProperties(prefix = "mybatis-plus.configuration")
|
|
public class CusMybatisConfiguration extends MybatisConfiguration {
|
|
}
|
|
|
|
@Configuration
|
|
@ConfigurationProperties(prefix = "mybatis-plus.global-config")
|
|
public class CusGlobalConfig extends GlobalConfig {
|
|
}
|
|
|
|
@Bean(name = "masterSqlSessionFactory")
|
|
@Primary
|
|
public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource, CusMybatisConfiguration configuration, CusGlobalConfig globalConfig)
|
|
throws Exception {
|
|
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
|
|
sessionFactory.setDataSource(masterDataSource);
|
|
sessionFactory.setConfiguration((MybatisConfiguration) configuration);
|
|
globalConfig.setSqlInjector(new CustomerSqlInjector());
|
|
sessionFactory.setGlobalConfig(globalConfig);
|
|
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
|
|
.getResources(MasterDataSourceConfig.MAPPER_LOCATION));
|
|
// 添加自定义 SQL 拦截器
|
|
sessionFactory.setPlugins(new MybatisDmHandler());
|
|
|
|
return sessionFactory.getObject();
|
|
}
|
|
|
|
}
|