多数据源配置

springboot多数据库配置

`package com.cjml.web.verifier.saaserp.api.config;

import com.github.pagehelper.PageInterceptor;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import tk.mybatis.spring.annotation.MapperScan;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
@MapperScan(basePackages = {“com.cjml.web.verifier.saaserp.dao.myapp”}, sqlSessionFactoryRef = “myappSessionFactory”)
public class myappConfig {

private static final String MAPPER_PATH = "classpath:mappers/myapp/*.xml";

private static String MYBATIS_CONFIG = "mybatis-config.xml";

@Value("${spring.datasource.myapp.driverClassName}")
private String driverClassNamePgSql;
@Value("${spring.datasource.myapp.username}")
private String usernameAuto;
@Value("${spring.datasource.myapp.password}")
private String passwordAuto;
@Value("${spring.datasource.myapp.jdbc-url:jdbc}")
private String urlAuto;

@Value("${spring.datasource.poolName}")
private String poolName;
@Value("${spring.datasource.maximumPoolSize}")
private int maximumPoolSize;
@Value("${spring.datasource.minimumIdle}")
private int minimumIdle;
@Value("${spring.datasource.connectionTimeout}")
private int connectionTimeout;
@Value("${spring.datasource.connectionTestQuery}")
private String connectionTestQuery;
@Value("${spring.datasource.idleTimeout}")
private int idleTimeout;
@Value("${spring.datasource.validationTimeout}")
private int validationTimeout;

@Bean(name = "myappDataSource")
@Qualifier("myappDataSource")
public DataSource dataSource() {
    HikariConfig hikariConfig = new HikariConfig();
    hikariConfig.setUsername(usernameAuto);
    hikariConfig.setJdbcUrl(urlAuto);
    hikariConfig.setPassword(passwordAuto);
    hikariConfig.setPoolName(poolName);
    hikariConfig.setDriverClassName(driverClassNamePgSql);
    // 池中最大连接数,包括闲置和使用中的连接 默认是10
    hikariConfig.setMaximumPoolSize(maximumPoolSize);
    // 池中维护的最小空闲连接数
    hikariConfig.setMinimumIdle(minimumIdle);
    // 等待来自池的连接的最大时长(毫秒)
    hikariConfig.setConnectionTimeout(connectionTimeout);
    hikariConfig.setConnectionTestQuery(connectionTestQuery);
    // 连接允许在池中闲置的最长时间(毫秒)
    hikariConfig.setIdleTimeout(idleTimeout);
    // 连接将被测试活动的最大时间量
    hikariConfig.setValidationTimeout(validationTimeout);
    HikariDataSource ds = new HikariDataSource(hikariConfig);
    return ds;
}

@Bean(name = "myappTransactionManager")
public DataSourceTransactionManager transactionManager(@Qualifier("myappDataSource") DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

@Bean(name = "myappSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("myappSessionFactory") SqlSessionFactory sqlSessionFactory) {
    return new SqlSessionTemplate(sqlSessionFactory);
}

@Bean(name = "myappSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("myappDataSource") DataSource dataSource) throws Exception {
    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
    sqlSessionFactoryBean.setDataSource(dataSource);
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    sqlSessionFactoryBean.setMapperLocations(resolver.getResources(MAPPER_PATH));
    sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(MYBATIS_CONFIG));
    //配置插件
    sqlSessionFactoryBean.setPlugins(plugins());
    return sqlSessionFactoryBean.getObject();
}

/**
 * 配置插件
 *
 * @return bean
 */

public Interceptor[] plugins() {
    Interceptor interceptor = new PageInterceptor();
    Properties properties = new Properties();
    //是否将参数offset作为pageNum
    properties.setProperty("offsetAsPageNum", "true");
    // 数据库类型
    properties.setProperty("helperDialect", "postgresql");
    // 是否返回行数,相当于MySQL的count(*)
    properties.setProperty("rowBoundsWithCount", "true");
    // 是否分页合理化:即翻页小于0时,显示第一页数据,翻页数较大查不到数据时,显示最后一页的数据,默认即为false,本处显示写出,以供参考。
    properties.setProperty("reasonable", "false");
    interceptor.setProperties(properties);
    Interceptor[] plugins = new Interceptor[1];
    plugins[0] = interceptor;
    return plugins;
}

}

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值