0
我們從Spring引導連接到多個數據庫。如何在Spring引導中爲MySQL數據庫指定默認模式Jdbc
application.properties:
datasource.target.url=jdbc:mysql://localhost:3306/db_test_1?useSSL=false
datasource.target.driver-class-name=com.mysql.jdbc.Driver
datasource.origin.url=jdbc:mysql://localhost:3306/db_test_2?useSSL=false
datasource.origin.driver-class-name=com.mysql.jdbc.Driver
數據庫配置:
@Configuration
public class DatabaseConfig {
@Bean(name = "originJdbcTemplate")
public JdbcTemplate originJdbcTemplate() {
return new JdbcTemplate(originDataSource());
}
@Bean(name = "targetJdbcTemplate")
public JdbcTemplate targetJdbcTemplate() {
return new JdbcTemplate(targetDataSource());
}
@Bean
@Primary
@ConfigurationProperties("datasource.origin")
public DataSourceProperties originDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("datasource.origin")
public DataSource originDataSource() {
return originDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
@ConfigurationProperties("datasource.target")
public DataSourceProperties targetDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("datasource.target")
public DataSource targetDataSource() {
return targetDataSourceProperties().initializeDataSourceBuilder().build();
}
}
我們使用了Spring JDBC模板,我們必須明確命名的每個查詢的模式,即使我們已經定義的模式名稱在應用程序屬性的上面的url。 e.g: 沒有架構名稱查詢不起作用
select * from db_test_1.user //works with schema name
select * from user //doesn't work
按本SO Answer 我應該使用Connection.setCatalog()
,我該怎麼做,在Spring配置?