【问题标题】:Multiple Data Sources and Autowired JDBC Template Causes Bad SQL Grammar in Spring Boot多个数据源和自动装配的 JDBC 模板导致 Spring Boot 中的 SQL 语法错误
【发布时间】:2017-02-17 16:40:19
【问题描述】:

我正在使用现有的 Spring Boot 应用程序。 application.properties 文件指定一个“spring.datasource”数据库。通过 Spring 的魔力,这个数据源被以下 NamedParameterJdbcTemplate 在整个代码中使用:

@Autowired
NamedParameterJdbcTemplate namedJdbcTemplate;

我需要访问其他数据源。我将数据库属性添加到 application.properties 文件中。然后我将 Configure.java 文件修改为如下所示:

@Primary
@Bean(name = "dataSource")  
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create().build();
}   

@Bean(name = "namedJdbcTemplate")
public NamedParameterJdbcTemplate namedJdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {
    return new NamedParameterJdbcTemplate(dataSource);
}

@Bean(name = "dbiSupportDataSource")
@ConfigurationProperties(prefix = "spring.dbisupport")
public DataSource dbiSupportDataSource() {
    return DataSourceBuilder.create().build();
}

我将自动连接保留到namedJdbcTemplate,并将自动连接添加到我的新数据源:

@Autowired
NamedParameterJdbcTemplate namedJdbcTemplate;

@Autowired
DataSource dbiSupportDataSource;

使用此代码,对新数据库源的 SQL 查询会导致如下错误:

错误的 SQL 语法 [SELECT * FROM support.core.table]

如果我从 Configure.java 文件中注释掉原始数据源和namedJdbcTemplate,则相同的 SQL 查询可以成功运行。

我还会注意到,即使我添加了新的数据源,对 namedJdbcTemplate 的 SQL 查询也会继续成功运行。

我在设置新数据源时是否做错了什么?我需要将我的 SQL 查询更改为新的数据源吗?

【问题讨论】:

    标签: spring-boot jdbctemplate


    【解决方案1】:

    一旦我在配置文件中为所有数据源定义了模板,SQL 查询就开始对这两个数据库起作用。换句话说,我在 Configuration.java 中添加了以下内容:

    @Bean(name = "dbiSupportJdbc")
    public NamedParameterJdbcTemplate dbiSupportJdbc(
            @Qualifier("dbiSupportDataSource") DataSource dbiSupportDataSource) {
        return new NamedParameterJdbcTemplate(dbiSupportDataSource);
    }
    

    然后我自动装配两个模板,而不是混合模板和数据源:

    @Autowired
    NamedParameterJdbcTemplate namedJdbcTemplate;
    
    @Autowired
    NamedParameterJdbcTemplate dbiSupportJdbc;
    

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 2018-03-22
      • 2018-11-01
      • 1970-01-01
      相关资源
      最近更新 更多