下面就是“SpringBoot多数据库连接(mysql+oracle)的实现”的完整攻略。
一、依赖引入
首先在pom.xml
中引入mysql
和oracle
的jdbc依赖,以及SpringBoot
的相关依赖:
<dependencies>
<!-- mysql jdbc -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!-- oracle jdbc -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
<!-- SpringBoot jdbc starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- SpringBoot web starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
二、数据源配置
接下来需要在application.yml
中配置两个数据源,分别为mysql和oracle,并将它们注入到DataSource
对象中:
spring:
datasource:
mysql:
username: root
password: root
url: jdbc:mysql://localhost:3306/test1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
oracle:
username: scott
password: tiger
url: jdbc:oracle:thin:@localhost:1521:ORCL
# 将两个数据源注入到DataSource对象中
multi:
dataSource:
type: com.zaxxer.hikari.HikariDataSource
druid:
url: @{spring.datasource.${multiple.datasource.use:oracle}.url}
username: @{spring.datasource.${multiple.datasource.use:oracle}.username}
password: @{spring.datasource.${multiple.datasource.use:oracle}.password}
以上代码中,我们使用了type: com.zaxxer.hikari.HikariDataSource
作为数据源对象类型,并且另外还配置了druid
的相关信息。
三、配置JdbcTemplate
在Java
代码中,我们需要为mysql和oracle分别配置一个JdbcTemplate
,并将它们注入到@Bean
中:
@Configuration
public class DataSourceConfig {
@Autowired
private HikariDataSource dataSource;
@Bean(name = "mysqlJdbcTemplate")
public JdbcTemplate mysqlJdbcTemplate() {
return new JdbcTemplate(new DataSourceWrapper(dataSource).getDataSource("mysql"));
}
@Bean(name = "oracleJdbcTemplate")
public JdbcTemplate oracleJdbcTemplate() {
return new JdbcTemplate(new DataSourceWrapper(dataSource).getDataSource("oracle"));
}
}
在以上代码中,我们使用了DataSourceWrapper
来获取mysql和oracle的DataSource
对象,并使用JdbcTemplate
将它们注入为@Bean
。
四、示例一:从mysql中查询数据
接下来我们使用一个示例来展示如何从mysql中查询数据。
先定义一个controller:
@RestController
public class HelloController {
@Autowired
@Qualifier("mysqlJdbcTemplate")
private JdbcTemplate mysqlJdbcTemplate;
@RequestMapping("/mysql")
public List<Map<String, Object>> hello() {
return mysqlJdbcTemplate.queryForList("select * from user");
}
}
在以上代码中,我们使用了@Autowired
将mysqlJdbcTemplate
注入,并在hello()
方法中从mysql中查询所有user
表的数据。
五、示例二:向oracle中插入数据
最后我们再使用一个示例来展示如何向oracle中插入数据。
定义一个controller:
@RestController
public class HelloController {
@Autowired
@Qualifier("oracleJdbcTemplate")
private JdbcTemplate oracleJdbcTemplate;
@RequestMapping("/oracle")
public String insert() {
int result = oracleJdbcTemplate.update("insert into test(name, value) values(?, ?)", "test", 123);
if (result > 0) {
return "Success";
} else {
return "Fail";
}
}
}
在以上代码中,我们使用了@Autowired
将oracleJdbcTemplate
注入,并在insert()
方法中向oracle中插入一条数据test
和123
。
六、总结
到此为止,我们就完成了“SpringBoot多数据库连接(mysql+oracle)的实现”的攻略。范例中,我们展示了两个使用JdbcTemplate查询或插入数据的示例,分别连接mysql和oracle,可供您参考。如果您有什么疑问或建议,欢迎添加哦!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot多数据库连接(mysql+oracle)的实现 - Python技术站