java - 如何在 spring-boot 中使用 2 个或更多 jdbcTemplate?

标签 java spring-boot jdbc spring-jdbc jdbctemplate

我想在我的项目中使用 application.properties 使用 2 个或更多 jdbcTemplate。我尝试过,但遇到了运行时异常。

########## 我的应用程序属性:-
     spring.datasource.driver-class-name=com.mysql.jdbc.Driver
     spring.datasource.url=jdbc:mysql://localhost:3306/ccm_new
     spring.datasource.username=test
     spring.datasource.password=test

      spring.oracledatasource.url=jdbc:oracle:thin:@localhost:1521:mastera
   spring.oracledatasource.password=test
   spring.oracledatasource.username=test
   spring.oracledatasource.driver-class-name=oracle.jdbc.driver.OracleDriver

     @Bean(name = "dsMaster") ############
     @Primary
     @ConfigurationProperties(prefix="spring.oracledatasource")
     public DataSource primaryDataSource() {
     return DataSourceBuilder.create().build();
    }

      @Bean(name = "jdbcMaster") #############
        public JdbcTemplate masterJdbcTemplate(@Qualifier("dsMaster") DataSource dsMaster)
           {
       return new JdbcTemplate(dsMaster);
      }
################我正常使用mysql连接,但是在使用oracle连接时我得到了

org.springframework.jdbc.CannotGetJdbcConnectionException: 获取 JDBC 连接失败;嵌套异常是 java.sql.SQLException:无法为连接 URL 'null' 创建类 '' 的 JDBC 驱动程序 在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:446) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456) 在此处输入代码

最佳答案

我错了,我想通过application.properties建立mysql连接,而不需要@bean配置。如果你想采取2个或更多连接,你只需要使用它们的@ConfigurationProperties(prefix= “spring.mysqldatasource”)与“spring.datasource”不同的prifix。prifix“spring.datasource”仅在我们需要仅从一个数据库建立连接时使用。这是最终的工作代码示例:-

应用程序属性

 spring.mysqldatasource.driver-class-name=com.mysql.jdbc.Driver
 spring.mysqldatasource.url=jdbc:mysql://localhost:3306/ccm_new
 spring.mysqldatasource.username=test
 spring.mysqldatasource.password=test
 spring.mysqldatasource.dbcp2.initial-size=5
 spring.mysqldatasource.dbcp2.max-total=15
 spring.mysqldatasource.dbcp2.pool-prepared-statements=true



spring.oracledatasource.url=jdbc:oracle:thin:@localhost:1521:mastera
spring.oracledatasource.password=test
spring.oracledatasource.username=test
spring.oracledatasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.oracledatasource.dbcp2.initial-size=5
spring.oracledatasource.dbcp2.max-total=15
spring.oracledatasource.dbcp2.pool-prepared-statements=true



 @Configuration
 public class PrototypeUtility {
 @Bean(name = "dsMaster")
@Primary
@ConfigurationProperties(prefix="spring.oracledatasource")
public DataSource primaryDataSource() {
    return DataSourceBuilder.create().build();
}
@Bean(name = "jdbcMaster")
public JdbcTemplate masterJdbcTemplate(@Qualifier("dsMaster") DataSource dsMaster) {
      return new JdbcTemplate(dsMaster);
}

@Bean(name = "dsMasterMysql")
@ConfigurationProperties(prefix="spring.mysqldatasource")
public DataSource primaryDataSourceMysql() {
    return DataSourceBuilder.create().build();
}
@Bean(name = "jdbcMasterMysql")
public JdbcTemplate masterMysqlJdbcTemplate(@Qualifier("dsMasterMysql") DataSource dsMasterMysql) {
      return new JdbcTemplate(dsMasterMysql);
}
  }

然后我自动连接了两个连接:-

     @Autowired
      private JdbcTemplate jdbcMasterMysql;

     @Autowired
     public JdbcTemplate jdbcMaster;

这段代码对我来说运行成功。 如果有人有疑问,请随时询问。

关于java - 如何在 spring-boot 中使用 2 个或更多 jdbcTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50216275/

相关文章:

java - Alexa BDD 测试

java - @DataJpaTest 使用存储库保存实体,无法使用 JdbcTemplate 检索数据

java - 该语句没有返回结果集。错误

java - 尝试在 Quarkus 中进行 REST 调用时出错

java - 数组中的二进制搜索不起作用

java - Spring Boot 2.0.0.RELEASE迁移后"Got different size of tuples and aliases"异常

typescript - CORS 预检 channel 在 Spring Security 中未成功

java - 查询中未明确命名结果集列

java - connection.createStatement 有多贵

java - 我应该先收集文件然后执行任务还是应该边收集边执行任务?)