双数据库使用

1application配置文件

#database
spring.datasource.dashboard.driver-class-name: com.mysql.cj.jdbc.Driver
spring.datasource.dashboard.hikari.pool-name: monitor-pool-hikaricp
spring.datasource.dashboard.url: jdbc:mysql://******/******?useUnicode=ture&characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.dashboard.username: ******
spring.datasource.dashboard.password: ******


# data database
spring.datasource.dal.driver-class-name: com.mysql.cj.jdbc.Driver
spring.datasource.dal.hikari.pool-name: monitor-pool-hikaricp
spring.datasource.dal.url: jdbc:mysql://******/user?useUnicode=ture&characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.dal.username: ******
spring.datasource.dal.password: ******
spring.main.allow-bean-definition-overriding: true

config配置,对两个数据源配置,并制定哪写dao用哪个mysql

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Configuration
@MapperScan(basePackages = {"com.ht.user.service.dao.xxx", "com.ht.user.service.dao.xx2"},
        sqlSessionFactoryRef = "dalSqlSessionFactory")//basePackages指定使用改配置的dao的包名
public class DalSQLDataSourceConfig {

    @Value("${spring.datasource.dal.url}")
    private String url;

    @Value("${spring.datasource.dal.username}")
    private String username;

    @Value("${spring.datasource.dal.password}")
    private String password;

    @Value("${spring.datasource.dal.driver-class-name:com.mysql.cj.jdbc.Driver}")
    private String driver;

    @Value("${spring.datasource.dal.hikari.pool-name:monitor-pool-hikaricp}")
    private String poolName;


    @Bean("dalsqlDataSource")
    @Qualifier("dalsqlDataSource")
    public DataSource getDataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName(driver);
        dataSource.setPoolName(poolName);
        return dataSource;
    }

    @Bean(name = "dalSqlSessionFactory")
    public SqlSessionFactory primarySqlSessionFactory(@Qualifier("dalsqlDataSource") DataSource datasource,
                                                      @Qualifier("dalsqlConfig") org.apache.ibatis.session.Configuration configuration1)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setConfiguration(configuration1);
        //分页插件
        Interceptor interceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        //properties.setProperty("params","pageNum=pageNumKey;pageSize=pageSizeKey;");
        interceptor.setProperties(properties);
        bean.setPlugins(new Interceptor[]{interceptor});
        return bean.getObject();
    }


    @Bean("dalSqlSessionTemplate")
    public SqlSessionTemplate mySqlSessionTemplate(@Qualifier("dalSqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

    @Bean("dalsqlConfig")
    @ConfigurationProperties(prefix = "mybatis.configuration")
    public org.apache.ibatis.session.Configuration configuration1() {
        return new org.apache.ibatis.session.Configuration();
    }

}



@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Configuration
@MapperScan(basePackages = "com.ht.info.dao.user", sqlSessionFactoryRef = "mySqlSessionFactory")
public class MySQLDataSourceConfig {

    @Value("${spring.datasource.dashboard.url}")
    private String url;

    @Value("${spring.datasource.dashboard.username}")
    private String username;

    @Value("${spring.datasource.dashboard.password}")
    private String password;

    @Value("${spring.datasource.dashboard.driver-class-name}")
    private String driver;

    @Value("${spring.datasource.dashboard.hikari.pool-name}")
    private String poolName;

    @Bean("mysqlDataSource")
    @Qualifier("mysqlDataSource")
    @Primary
    public DataSource getDataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName(driver);
        dataSource.setPoolName(poolName);
        return dataSource;
    }

    @Bean(name = "mySqlSessionFactory")
    @Primary
    public SqlSessionFactory primarySqlSessionFactory(@Qualifier("mysqlDataSource") DataSource datasource,
                                                      @Qualifier("mysqlConfig") org.apache.ibatis.session.Configuration configuration2)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setConfiguration(configuration2);
        //分页插件
        Interceptor interceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        //properties.setProperty("params","pageNum=pageNumKey;pageSize=pageSizeKey;");
        interceptor.setProperties(properties);
        bean.setPlugins(new Interceptor[]{interceptor});
        return bean.getObject();
    }


    @Bean("mySqlSessionTemplate")
    @Primary
    public SqlSessionTemplate mySqlSessionTemplate(@Qualifier("mySqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

    @Bean("mysqlConfig")
    @ConfigurationProperties(prefix = "mybatis.configuration")
    public org.apache.ibatis.session.Configuration configuration() {
        return new org.apache.ibatis.session.Configuration();
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值