• jdbctemplate 多数据源


    1.数据源配置

    spring:
    # jdbctemplate 连接多数据源配置
    db1:
    datasource:
    jdbcurl: jdbc:mysql://127.0.0.1:3306/cloud-main1?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    db2:
    datasource:
    jdbcurl: jdbc:mysql://127.0.0.1:3306/cloud-main2?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

    2.启动类
    @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

    3.config 配置datasource
    package com.example.demo.jdbctemplate.config;
    
    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 javax.sql.DataSource;
    
    @Configuration
    public class DataSourceConfig {
    
        @Primary //(主数据源配置)
        @Bean(name = "db1")
        @Qualifier("db1")
        @ConfigurationProperties(prefix = "spring.db1.datasource")
        public DataSource mysqlDataSource(){
    
            return DataSourceBuilder.create().build();
        }
    
        //
        @Bean(name = "db2")
        @Qualifier("db2")
        @ConfigurationProperties(prefix = "spring.db2.datasource")
        public DataSource sqlServerDataSource(){
    
            return DataSourceBuilder.create().build();
        }
    }
    

    构造 db1JdbcTemplate、  db2JdbcTemplate

    package com.example.demo.jdbctemplate.config;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Repository;
    
    import javax.sql.DataSource;
    
    @Repository
    public class DBLoader {
        @Bean(name = "db1JdbcTemplate")
        public JdbcTemplate primaryJdbcTemplate(@Qualifier("db1") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
        @Bean(name = "db2JdbcTemplate")
        public JdbcTemplate secondaryJdbcTemplate(@Qualifier("db2") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
    }
    

      4.调用

    @Service
    public class DBTools {
        @Autowired
        @Qualifier( "db1JdbcTemplate")
        private  JdbcTemplate jdbcTemplate1;
        @Autowired
        @Qualifier("db2JdbcTemplate")
        private  JdbcTemplate jdbcTemplate2 ;
    
        JdbcTemplate jdbcTemplate;
    
        public  JdbcTemplate getDB(String db  ) {
            if("db1".equals(db)){
                return  jdbcTemplate1;
            }else if ("db2".equals(db)){
                return  jdbcTemplate2;
            }else {
                return null ;
            }
    
        }
    
        /***
         * 查询
         * @param sql
         * @return 返回list
         */
        public   List<Map<String, Object>> queryForList(String db,String sql ) {
            List<Map<String, Object>> queryForList =  getDB(db).queryForList(sql );
            return  queryForList;
        }
    }
    

      

     
  • 相关阅读:
    性能分析
    thymeleaf和spring的整合
    Java中二叉树的建立
    面试题
    (转)structs2的相关配置问题
    ==与equal()的区别
    java的基本类型和其包装类
    Ajax调用返回json数组,对象 (JSONArray.fromObject)
    (转)在JSP中调用JAVA类和使用JavaBean有什么区别?
    用log4j查看详细错误信息
  • 原文地址:https://www.cnblogs.com/heshana/p/13188755.html
Copyright © 2020-2023  润新知