package com.baiyue.mjump.springboot;
import javax.sql.DataSource;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import com.baiyue.mjump.anno.MapperStat;
@org.springframework.context.annotation.Configuration
@MapperScan(basePackages = "com.baiyue.mjump.dao", annotationClass = MapperStat.class, sqlSessionTemplateRef = "sqlSessionTemplate"+StatDataSourceConfig.SUFFIX)
public class StatDataSourceConfig {
public static final String SUFFIX = "_stat";
@Bean("dataSource" + SUFFIX)
@ConfigurationProperties("spring.datasource" + SUFFIX)
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean("mybatisProperties" + SUFFIX)
@ConfigurationProperties("mybatis" + SUFFIX)
public MybatisProperties mybatisProperties() {
return new MybatisProperties();
}
@Bean("transactionManager" + SUFFIX)
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean("sqlSessionFactory" + SUFFIX)
public SqlSessionFactory sqlSessionFactory() throws Exception {
MybatisProperties properties = mybatisProperties();
DataSource ds = dataSource();
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
factory.setDataSource(ds);
factory.setVfs(SpringBootVFS.class);
Configuration configuration = properties.getConfiguration();
if (configuration == null && !StringUtils.hasText(properties.getConfigLocation())) {
configuration = new Configuration();
}
factory.setConfiguration(configuration);
if (properties.getConfigurationProperties() != null) {
factory.setConfigurationProperties(properties.getConfigurationProperties());
}
if (StringUtils.hasLength(properties.getTypeAliasesPackage())) {
factory.setTypeAliasesPackage(properties.getTypeAliasesPackage());
}
if (StringUtils.hasLength(properties.getTypeHandlersPackage())) {
factory.setTypeHandlersPackage(properties.getTypeHandlersPackage());
}
if (!ObjectUtils.isEmpty(properties.resolveMapperLocations())) {
factory.setMapperLocations(properties.resolveMapperLocations());
}
return factory.getObject();
}
@Bean("sqlSessionTemplate" + SUFFIX)
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
SqlSessionFactory sqlSessionFactory = sqlSessionFactory();
MybatisProperties properties = mybatisProperties();
ExecutorType executorType = properties.getExecutorType();
if (executorType != null) {
return new SqlSessionTemplate(sqlSessionFactory, executorType);
} else {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
}
spring:
application:
name: console-mjump
profiles:
active: prod
cloud:
config:
enabled: false
profile: ${spring.profiles.active}
uri: http://${eurekaip}/servicecenter/configs/
datasource:
url: jdbc:mysql://172.16.168.199:3306/game_plat
username: chenlong
password: Chen12%3Long
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
maxActive: 20
datasource_trading:
url: jdbc:mysql://172.16.168.199:3306/game_plat_record
username: chenlong
password: Chen12%3Long
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
maxActive: 20
datasource_stat:
url: jdbc:mysql://172.16.168.199:3306/game_plat_stat
username: chenlong
password: Chen12%3Long
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
maxActive: 20
mybatis:
mapper-locations: classpath:sql/*.xml
type-aliases-package: com.baiyue.mjump.entity,com.baiyue.mjump.entity.dto
configuration:
map-underscore-to-camel-case: true
mybatis_trading:
mapper-locations: classpath:sql/*.xml
type-aliases-package: com.baiyue.mjump.entity,com.baiyue.mjump.entity.dto
configuration:
map-underscore-to-camel-case: true
mybatis_stat:
mapper-locations: classpath:sql/*.xml
type-aliases-package: com.baiyue.mjump.entity,com.baiyue.mjump.entity.dto
configuration:
map-underscore-to-camel-case: true