使用Druid,以jdbc方式配置多数据源

文章目录

  • 背景
  • 示例代码(结合实际进行配置)
  • 总结

背景

当使用Spring Boot项目并需要多数据源时,你可以使用Druid连接池来配置和管理多个数据源。以下是一个示例的配置和代码,以说明如何实现多数据源:

示例代码(结合实际进行配置)

  1. 首先,确保在pom.xml文件中添加Druid依赖:

    	<dependency>
    	    <groupId>com.alibabagroupId>
    	    <artifactId>druid-spring-boot-starterartifactId>
    	    <version>1.2.6version>
    	dependency>
    
  2. 创建两个数据源配置类,分别对应两个数据源(假设为dataSource1和dataSource2):

    	@Configuration
    	public class DataSource1Config {
    	    
    	    @Bean
    	    @ConfigurationProperties("spring.datasource.druid.datasource1")
    	    public DataSource dataSource1() {
    	        return DruidDataSourceBuilder.create().build();
    	    }
    	}
    
    	@Configuration
    	public class DataSource2Config {
    	    
    	    @Bean
    	    @ConfigurationProperties("spring.datasource.druid.datasource2")
    	    public DataSource dataSource2() {
    	        return DruidDataSourceBuilder.create().build();
    	    }
    	}
    

    在上述代码中,使用@ConfigurationProperties注解将Druid配置属性绑定到数据源对象,并创建Druid数据源实例。

  3. 在application.properties或application.yml文件中配置数据源相关属性:

    • application.properties示例:
    	spring.datasource.druid.datasource1.url=jdbc:mysql://localhost:3306/db1
    	spring.datasource.druid.datasource1.username=username1
    	spring.datasource.druid.datasource1.password=password1
    	spring.datasource.druid.datasource1.driver-class-name=com.mysql.jdbc.Driver
    	
    	spring.datasource.druid.datasource2.url=jdbc:mysql://localhost:3306/db2
    	spring.datasource.druid.datasource2.username=username2
    	spring.datasource.druid.datasource2.password=password2
    	spring.datasource.druid.datasource2.driver-class-name=com.mysql.jdbc.Driver
    
    • application.yml示例:
    spring:
      datasource:
        druid:
          datasource1:
            url: jdbc:mysql://localhost:3306/db1
            username: username1
            password: password1
            driver-class-name: com.mysql.jdbc.Driver
          datasource2:
            url: jdbc:mysql://localhost:3306/db2
            username: username2
            password: password2
            driver-class-name: com.mysql.jdbc.Driver
    

    在上述配置中,你可以根据实际情况修改URL、用户名和密码等数据源配置属性。

  4. 创建两个数据源的JdbcTemplate对象:

    	@Configuration
    	public class JdbcTemplateConfig {
    	    
    	    @Bean
    	    public JdbcTemplate jdbcTemplate1(@Qualifier("dataSource1") DataSource dataSource1) {
    	        return new JdbcTemplate(dataSource1);
    	    }
    	    
    	    @Bean
    	    public JdbcTemplate jdbcTemplate2(@Qualifier("dataSource2") DataSource dataSource2) {
    	        return new JdbcTemplate(dataSource2);
    	    }
    	}
    

    在上述代码中,使用@Qualifier注解指定要注入的数据源对象。

  5. 在需要使用数据源的地方,注入相应的JdbcTemplate并使用:

    	@Service
    	public class UserService {
    	    
    	    private final JdbcTemplate jdbcTemplate1;
    	    private final JdbcTemplate jdbcTemplate2;
    	    
    	    public UserService(@Qualifier("jdbcTemplate1") JdbcTemplate jdbcTemplate1,
    	                       @Qualifier("jdbcTemplate2") JdbcTemplate jdbcTemplate2) {
    	        this.jdbcTemplate1 = jdbcTemplate1;
    	        this.jdbcTemplate2 = jdbcTemplate2;
    	    }
    	    
    	    public void getUserData() {
    	        String sql1 = "SELECT * FROM user1";
    	        List<Map<String, Object>> users1 = jdbcTemplate1.queryForList(sql1);
    	        
    	        String sql2 = "SELECT * FROM user2";
    	        List<Map<String, Object>> users2 = jdbcTemplate2.queryForList(sql2);
    	        
    	        // 处理数据...
    	    }
    	}
    

    在上述代码中,通过构造函数注入两个JdbcTemplate对象,并使用它们执行相应的SQL查询操作。

总结

通过以上配置和代码,你可以在Spring Boot项目中实现多数据源的使用。每个数据源都有单独的Druid配置,并通过JdbcTemplate对象进行数据库操作。

如果大家遇到类似问题,欢迎评论区讨论,如有错误之处,敬请留言。

你可能感兴趣的:(java,数据库,mybatis)