Spring Boot + MyBatis 多数据库配置:访问 Oracle 数据库完整示例
以下是一个使用 Spring Boot 和 MyBatis 在 Oracle 多数据库上执行查询的完整示例。我们将使用两个数据库:db1 和 db2。在每个数据库中,我们将创建一个具有两列的表:id 和 name。
- 创建两个 Oracle 数据库
我们将创建两个 Oracle 数据库:db1 和 db2。您可以使用 Oracle 官方文档中提供的步骤来创建这些数据库。
- 创建两个表
在每个数据库中,我们将创建一个名为'table1' 的表。这个表有两个列:id 和 name。您可以使用以下 SQL 语句来创建这些表:
在 db1 数据库中:
CREATE TABLE table1 (
id NUMBER(10) PRIMARY KEY NOT NULL,
name VARCHAR2(50) NOT NULL
);
在 db2 数据库中:
CREATE TABLE table1 (
id NUMBER(10) PRIMARY KEY NOT NULL,
name VARCHAR2(50) NOT NULL
);
- 添加 Oracle JDBC 驱动
我们需要将 Oracle JDBC 驱动程序添加到我们的项目中。您可以通过 Maven 来完成这个任务,只需将以下依赖项添加到您的 pom.xml 文件中:
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
- 配置数据源
我们需要为每个数据库配置一个数据源。您可以使用 Spring Boot 的自动配置来轻松地完成这个任务。只需将以下配置添加到您的 application.properties 文件中:
spring.datasource.db1.url=jdbc:oracle:thin:@localhost:1521:db1
spring.datasource.db1.username=your_username
spring.datasource.db1.password=your_password
spring.datasource.db1.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.db2.url=jdbc:oracle:thin:@localhost:1521:db2
spring.datasource.db2.username=your_username
spring.datasource.db2.password=your_password
spring.datasource.db2.driver-class-name=oracle.jdbc.OracleDriver
- 创建 Mapper 接口
我们需要为每个数据库创建一个 Mapper 接口。您可以使用 MyBatis 来轻松地完成这个任务。只需创建一个接口,并为其添加 @Mapper 注解。然后,您可以使用 @Select 注解为接口添加查询语句。例如,在我们的例子中,我们将创建两个 Mapper 接口:Db1Mapper 和 Db2Mapper,每个接口都有一个 findAll() 方法,用于查询表中的所有数据。
在 Db1Mapper 中:
@Mapper
public interface Db1Mapper {
@Select("SELECT * FROM table1")
List<Map<String, Object>> findAll();
}
在 Db2Mapper 中:
@Mapper
public interface Db2Mapper {
@Select("SELECT * FROM table1")
List<Map<String, Object>> findAll();
}
- 创建 Service 类
我们需要为每个数据库创建一个 Service 类。您可以使用 @Autowired 注解将 Mapper 接口注入到您的 Service 类中。例如,在我们的例子中,我们将创建两个 Service 类:Db1Service 和 Db2Service,每个 Service 类都有一个 findAll() 方法,用于查询表中的所有数据。
在 Db1Service 中:
@Service
public class Db1Service {
@Autowired
private Db1Mapper db1Mapper;
public List<Map<String, Object>> findAll() {
return db1Mapper.findAll();
}
}
在 Db2Service 中:
@Service
public class Db2Service {
@Autowired
private Db2Mapper db2Mapper;
public List<Map<String, Object>> findAll() {
return db2Mapper.findAll();
}
}
- 创建 Controller 类
我们需要为每个数据库创建一个 Controller 类。您可以使用 @Autowired 注解将 Service 类注入到您的 Controller 类中。例如,在我们的例子中,我们将创建两个 Controller 类:Db1Controller 和 Db2Controller,每个 Controller 类都有一个 findAll() 方法,用于查询表中的所有数据。
在 Db1Controller 中:
@RestController
public class Db1Controller {
@Autowired
private Db1Service db1Service;
@GetMapping("/db1")
public List<Map<String, Object>> findAll() {
return db1Service.findAll();
}
}
在 Db2Controller 中:
@RestController
public class Db2Controller {
@Autowired
private Db2Service db2Service;
@GetMapping("/db2")
public List<Map<String, Object>> findAll() {
return db2Service.findAll();
}
}
- 运行应用程序
您可以使用以下命令运行您的应用程序:
mvn spring-boot:run
- 测试查询
您可以使用 curl 命令来测试您的查询。例如,您可以使用以下命令来从 db1 数据库查询表中的所有数据:
curl http://localhost:8080/db1
您可以使用以下命令来从 db2 数据库查询表中的所有数据:
curl http://localhost:8080/db2
这就是一个使用 Spring Boot 和 MyBatis 在 Oracle 多数据库上执行查询的完整示例。
原文地址: https://www.cveoy.top/t/topic/ovr1 著作权归作者所有。请勿转载和采集!