以下是一个使用 Spring Boot 和 MyBatis 在 Oracle 多数据库上执行查询的完整示例。我们将使用两个数据库:db1 和 db2。在每个数据库中,我们将创建一个具有两列的表:id 和 name。

  1. 创建两个 Oracle 数据库

我们将创建两个 Oracle 数据库:db1 和 db2。您可以使用 Oracle 官方文档中提供的步骤来创建这些数据库。

  1. 创建两个表

在每个数据库中,我们将创建一个名为'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
);
  1. 添加 Oracle JDBC 驱动

我们需要将 Oracle JDBC 驱动程序添加到我们的项目中。您可以通过 Maven 来完成这个任务,只需将以下依赖项添加到您的 pom.xml 文件中:

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc8</artifactId>
  <version>19.3.0.0</version>
</dependency>
  1. 配置数据源

我们需要为每个数据库配置一个数据源。您可以使用 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
  1. 创建 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();
}
  1. 创建 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();
  }
}
  1. 创建 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();
  }
}
  1. 运行应用程序

您可以使用以下命令运行您的应用程序:

mvn spring-boot:run
  1. 测试查询

您可以使用 curl 命令来测试您的查询。例如,您可以使用以下命令来从 db1 数据库查询表中的所有数据:

curl http://localhost:8080/db1

您可以使用以下命令来从 db2 数据库查询表中的所有数据:

curl http://localhost:8080/db2

这就是一个使用 Spring Boot 和 MyBatis 在 Oracle 多数据库上执行查询的完整示例。

Spring Boot + MyBatis 多数据库配置:访问 Oracle 数据库完整示例

原文地址: https://www.cveoy.top/t/topic/ovr1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录