当遇到项目需要的时候,一个项目同时要操作几种不同的数据库时,那么怎么解决呢?
我这里遇到了,即要使用postgresql数据库,又要使用mysql数据库。根据功能的不同使用不同的数据库。
一、pom.xml
<!-- postgresql driver -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.12</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/postgresql-42.2.12.jar</systemPath>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
导入苞米豆的依赖,不同数据库的依赖。
二、application.yml
spring:
datasource:
dialect: postgres
dynamic:
primary: master
datasource:
master:
# postgres --------------------------
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/wform
username: postgres
password: postgres
mysql:
# mysql --------------------------
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/ecard_db_yh?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&tinyInt1isBit=true
username: root
password: helloliuting001
三、方法使用
@DS 的值根据功能不同选择不同的数据库。
@Controller
@Slf4j
public class IndexController {
@Autowired
private JdbcTemplate jdbc;
@GetMapping("/")
@DS(value = "mysql") //选择使用哪个数据库资源
public String index(){
String sql="select * from ecs_person where person_id=1";
Map<String,Object> map=jdbc.queryForMap(sql);
log.info(JSONObject.toJSONString(map));
return "index";
}
}
以上经过测试,放心使用。
只是需要导入苞米豆的依赖,人家已经给你全部写好了,配置一下,直接用就可以了。: