Spring boot 多个数据源和自动连接的JDBC模板导致Spring Boot中的SQL语法错误
我正在使用现有的Spring启动应用程序。application.properties文件指定一个“Spring boot 多个数据源和自动连接的JDBC模板导致Spring Boot中的SQL语法错误,spring-boot,jdbctemplate,Spring Boot,Jdbctemplate,我正在使用现有的Spring启动应用程序。application.properties文件指定一个“spring.datasource”数据库。通过Spring的魔力,以下NamedParameterJdbcTemplate在整个代码中使用了此数据源: @Autowired NamedParameterJdbcTemplate namedJdbcTemplate; 我需要访问其他数据源。我将数据库属性添加到application.properties文件中。然后,我修改了Configure.j
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();
}
我将自动连接保留到名称djdbctemplate
,并将自动连接添加到我的新数据源:
@Autowired
NamedParameterJdbcTemplate namedJdbcTemplate;
@Autowired
DataSource dbiSupportDataSource;
使用此代码,对新数据库源的SQL查询会导致如下错误:
@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();
}
错误的SQL语法[从support.core
表中选择*
如果从Configure.java文件中注释掉原始数据源和namedJdbcTemplate
,则相同的SQL查询会成功运行
我还将注意到,即使添加了新的数据源,对namedJdbcTemplate
的SQL查询仍能成功运行
我在设置新数据源时是否做错了什么?是否需要将SQL查询更改为新的数据源?在配置文件中为所有数据源定义模板后,SQL查询开始对这两个数据库工作。换句话说,我在Configuration.java中添加了以下内容:
@Bean(name = "dbiSupportJdbc")
public NamedParameterJdbcTemplate dbiSupportJdbc(
@Qualifier("dbiSupportDataSource") DataSource dbiSupportDataSource) {
return new NamedParameterJdbcTemplate(dbiSupportDataSource);
}
然后,我自动连接了两个模板,而不是混合模板和数据源:
@Autowired
NamedParameterJdbcTemplate namedJdbcTemplate;
@Autowired
NamedParameterJdbcTemplate dbiSupportJdbc;