parent
91d029713f
commit
bd7539b3d6
@ -0,0 +1,26 @@
|
||||
package com.dsic.gj_erp.config;
|
||||
|
||||
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 javax.sql.DataSource;
|
||||
|
||||
@Configuration
|
||||
public class DynamicDataSourceConfig {
|
||||
@Primary
|
||||
@Bean("masterDataSource")
|
||||
@ConfigurationProperties("spring.datasource.master")
|
||||
public DataSource masterDataSource() {
|
||||
return DataSourceBuilder.create().build();
|
||||
}
|
||||
|
||||
@Bean("jiuzhouDataSource")
|
||||
@ConfigurationProperties("spring.datasource.jiuzhou")
|
||||
public DataSource jiuzhouDataSource() {
|
||||
return DataSourceBuilder.create().build();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
package com.dsic.gj_erp.config;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import org.hibernate.boot.model.naming.Identifier;
|
||||
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
|
||||
import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
|
||||
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
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.core.env.Environment;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
|
||||
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
|
||||
import org.springframework.orm.jpa.JpaTransactionManager;
|
||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.sql.DataSource;
|
||||
import java.util.Properties;
|
||||
|
||||
@Configuration
|
||||
@EnableJpaRepositories(
|
||||
basePackages = "com.dsic.gj_erp",
|
||||
entityManagerFactoryRef = "manEntityManagerFactory",
|
||||
transactionManagerRef = "manTransactionManager"
|
||||
)
|
||||
public class JapConfig {
|
||||
@Autowired
|
||||
private Environment env; //1
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "spring.datasource.master")
|
||||
public DataSourceProperties japDataSourceProperties() {
|
||||
return new DataSourceProperties();
|
||||
}
|
||||
|
||||
@Bean("jpaDataSource")
|
||||
public DataSource jpaDataSource() {
|
||||
DataSourceProperties manDataSourceProperties = japDataSourceProperties();
|
||||
return DataSourceBuilder.create()
|
||||
.driverClassName(manDataSourceProperties.getDriverClassName())
|
||||
.url(manDataSourceProperties.getUrl())
|
||||
.username(manDataSourceProperties.getUsername())
|
||||
.password(manDataSourceProperties.getPassword())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager manTransactionManager() { //4
|
||||
EntityManagerFactory factory = manEntityManagerFactory().getObject();
|
||||
return new JpaTransactionManager(factory);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PhysicalNamingStrategy physicalNamingStrategy() {
|
||||
return new PhysicalNamingStrategyStandardImpl() {
|
||||
@Override
|
||||
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment jdbcEnvironment) {
|
||||
return Identifier.toIdentifier(StringUtils.camelToUnderline(name.getText()));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LocalContainerEntityManagerFactoryBean manEntityManagerFactory() {
|
||||
LocalContainerEntityManagerFactoryBean factory =
|
||||
new LocalContainerEntityManagerFactoryBean();
|
||||
factory.setDataSource(jpaDataSource());
|
||||
factory.setPackagesToScan("com.dsic.gj_erp");
|
||||
factory.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
|
||||
Properties jpaProperties = new Properties();
|
||||
//设置控制台打印sql
|
||||
jpaProperties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
|
||||
//字段驼峰转下划线
|
||||
jpaProperties.put("hibernate.physical_naming_strategy", env.getProperty("hibernate.naming.physical_strategy"));
|
||||
factory.setJpaProperties(jpaProperties);
|
||||
return factory;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DataSourceInitializer manDataSourceInitializer() {//6
|
||||
DataSourceInitializer dsInitializer = new DataSourceInitializer();
|
||||
dsInitializer.setDataSource(jpaDataSource());
|
||||
ResourceDatabasePopulator dbPopulator = new ResourceDatabasePopulator();
|
||||
dsInitializer.setDatabasePopulator(dbPopulator);
|
||||
dsInitializer.setEnabled(env.getProperty("spring.datasource.master.initialize",
|
||||
Boolean.class, false));
|
||||
return dsInitializer;
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.dsic.gj_erp.config;
|
||||
|
||||
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||
import com.baomidou.mybatisplus.core.MybatisXMLLanguageDriver;
|
||||
import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
||||
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppSqlInjector;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
@MapperScan(basePackages = {"com.dsic.gj_erp.jiuzhoumapper"}, sqlSessionTemplateRef = "jiuzhouSqlSessionTemplate")
|
||||
@Configuration
|
||||
public class MyBatisPlusConfigJiuZhou {
|
||||
@Bean("jiuzhouSqlSessionFactory")
|
||||
public SqlSessionFactory jiuzhouSqlSessionFactory(@Qualifier("jiuzhouDataSource") DataSource dataSource, MppSqlInjector mppSqlInjector) throws Exception {
|
||||
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
|
||||
|
||||
sqlSessionFactory.setDataSource(dataSource);
|
||||
|
||||
MybatisConfiguration configuration = new MybatisConfiguration();
|
||||
configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
|
||||
configuration.setJdbcTypeForNull(JdbcType.NULL);
|
||||
configuration.setMapUnderscoreToCamelCase(true);
|
||||
sqlSessionFactory.setConfiguration(configuration);
|
||||
|
||||
sqlSessionFactory.setTypeAliasesPackage("com.dsic.gj_erp.bean");
|
||||
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().
|
||||
getResources("classpath:mappers/*/*.xml"));
|
||||
sqlSessionFactory.setPlugins(new PaginationInterceptor());
|
||||
sqlSessionFactory.setGlobalConfig(globalConfig(mppSqlInjector));
|
||||
|
||||
return sqlSessionFactory.getObject();
|
||||
}
|
||||
|
||||
|
||||
@Bean(name = "jiuzhouTransactionManager")
|
||||
public DataSourceTransactionManager jiuzhouTransactionManager(@Qualifier("jiuzhouDataSource") DataSource dataSource) {
|
||||
return new DataSourceTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
@Bean(name = "jiuzhouSqlSessionTemplate")
|
||||
public SqlSessionTemplate jiuzhouSqlSessionTemplate(@Qualifier("jiuzhouSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
|
||||
return new SqlSessionTemplate(sqlSessionFactory);
|
||||
}
|
||||
|
||||
public GlobalConfig globalConfig(MppSqlInjector mppSqlInjector) {
|
||||
GlobalConfig globalConfig = new GlobalConfig();
|
||||
GlobalConfig.DbConfig dbConfig = new GlobalConfig.DbConfig();
|
||||
globalConfig.setDbConfig(dbConfig);
|
||||
globalConfig.setSqlInjector(mppSqlInjector);
|
||||
globalConfig.setBanner(false);
|
||||
return globalConfig;
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
package com.dsic.gj_erp.config;
|
||||
|
||||
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||
import com.baomidou.mybatisplus.core.MybatisXMLLanguageDriver;
|
||||
import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
||||
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppSqlInjector;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
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;
|
||||
|
||||
@MapperScan(basePackages = {"com.dsic.gj_erp.mapper"}, sqlSessionTemplateRef = "masterSqlSessionTemplate")
|
||||
@Configuration
|
||||
public class MyBatisPlusConfigMaster {
|
||||
@Primary
|
||||
@Bean("masterSqlSessionFactory")
|
||||
public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource, MppSqlInjector mppSqlInjector) throws Exception {
|
||||
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
|
||||
|
||||
sqlSessionFactory.setDataSource(dataSource);
|
||||
|
||||
MybatisConfiguration configuration = new MybatisConfiguration();
|
||||
configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
|
||||
configuration.setJdbcTypeForNull(JdbcType.NULL);
|
||||
configuration.setMapUnderscoreToCamelCase(true);
|
||||
sqlSessionFactory.setConfiguration(configuration);
|
||||
|
||||
sqlSessionFactory.setTypeAliasesPackage("com.dsic.gj_erp.bean");
|
||||
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().
|
||||
getResources("classpath:mappers/*/*.xml"));
|
||||
sqlSessionFactory.setPlugins(new PaginationInterceptor());
|
||||
sqlSessionFactory.setGlobalConfig(globalConfig(mppSqlInjector));
|
||||
|
||||
return sqlSessionFactory.getObject();
|
||||
}
|
||||
|
||||
|
||||
@Primary
|
||||
@Bean(name = "masterTransactionManager")
|
||||
public DataSourceTransactionManager masterTransactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
|
||||
return new DataSourceTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean(name = "masterSqlSessionTemplate")
|
||||
public SqlSessionTemplate masterSqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
|
||||
return new SqlSessionTemplate(sqlSessionFactory);
|
||||
}
|
||||
|
||||
public GlobalConfig globalConfig(MppSqlInjector mppSqlInjector) {
|
||||
GlobalConfig globalConfig = new GlobalConfig();
|
||||
GlobalConfig.DbConfig dbConfig = new GlobalConfig.DbConfig();
|
||||
globalConfig.setDbConfig(dbConfig);
|
||||
globalConfig.setSqlInjector(mppSqlInjector);
|
||||
globalConfig.setBanner(false);
|
||||
return globalConfig;
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.dsic.gj_erp.config;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import org.hibernate.boot.model.naming.Identifier;
|
||||
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
|
||||
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
|
||||
|
||||
public class MyPhysicalNamingStrategy implements PhysicalNamingStrategy {
|
||||
@Override
|
||||
public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment jdbcEnvironment) {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment jdbcEnvironment) {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment jdbcEnvironment) {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment jdbcEnvironment) {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment) {
|
||||
//用数组列出所有大写字母
|
||||
String[] chars = new String[]{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
|
||||
if (StrUtil.startWithAny(name.getText(), chars)) {
|
||||
return name;
|
||||
}
|
||||
return Identifier.toIdentifier(StringUtils.camelToUnderline(name.getText()));
|
||||
}
|
||||
}
|
Loading…
Reference in new issue