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.
79 lines
3.5 KiB
Java
79 lines
3.5 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.plugins.MybatisPlusInterceptor;
|
|
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
|
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
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;
|
|
|
|
@Slf4j
|
|
@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(configuration);
|
|
globalConfig.setSqlInjector(new CustomerSqlInjector());
|
|
sessionFactory.setGlobalConfig(globalConfig);
|
|
// sessionFactory.setPlugins(mybatisPlusInterceptor());
|
|
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
|
|
.getResources(MasterDataSourceConfig.MAPPER_LOCATION));
|
|
return sessionFactory.getObject();
|
|
}
|
|
|
|
@Bean
|
|
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
|
log.error("配置分页拦截器");
|
|
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
|
|
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
|
|
mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor); // 分页插件
|
|
//防全表修改删除
|
|
// mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
|
|
return mybatisPlusInterceptor;
|
|
}
|
|
}
|