使用mybatis实现连接两个数据库
时间: 2024-03-23 17:39:18 浏览: 18
MyBatis 是一个持久层框架,可以轻松地使用 JDBC 连接多个数据库。下面是使用 MyBatis 连接两个 MySQL 数据库的示例代码:
1. 配置两个数据源
在 MyBatis 的配置文件中,需要配置两个数据源,分别对应两个数据库。以下是一个示例配置:
```xml
<configuration>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/database1" />
<property name="username" value="root" />
<property name="password" value="password1" />
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/database2" />
<property name="username" value="root" />
<property name="password" value="password2" />
</dataSource>
</environment>
</environments>
</configuration>
```
在这个配置文件中,我们定义了两个环境(`dev` 和 `test`),每个环境都有一个数据源。每个数据源的 URL、用户名和密码都不同。
2. 定义两个 Mapper 文件
在 MyBatis 中,Mapper 文件定义了 SQL 语句和 Java 方法之间的映射关系。我们需要定义两个 Mapper 文件,分别对应两个数据库中的表。以下是一个示例 Mapper 文件:
```xml
<mapper namespace="com.example.mapper1">
<select id="getUser" resultType="com.example.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
```
在这个 Mapper 文件中,我们定义了一个名为 `getUser` 的查询语句,它将返回一个 `User` 对象。这个查询语句将从 `user` 表中查询 ID 等于给定 ID 的行。
3. 使用 SqlSession 连接数据库
在 Java 代码中,我们可以使用 `SqlSessionFactory` 创建一个 `SqlSession` 对象,然后使用这个对象执行数据库操作。以下是一个示例 Java 代码:
```java
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, "dev");
SqlSession sqlSession1 = sqlSessionFactory.openSession();
User user1 = sqlSession1.selectOne("com.example.mapper1.getUser", 1);
sqlSession1.close();
SqlSession sqlSession2 = sqlSessionFactory.openSession("test");
User user2 = sqlSession2.selectOne("com.example.mapper2.getUser", 1);
sqlSession2.close();
```
在这个 Java 代码中,我们首先加载 MyBatis 的配置文件。然后,我们使用 `SqlSessionFactoryBuilder` 创建一个 `SqlSessionFactory` 对象,并将其与 `dev` 环境相关联。接下来,我们使用 `SqlSessionFactory` 创建两个 `SqlSession` 对象,分别连接两个数据库。最后,我们使用这两个 `SqlSession` 对象分别执行查询语句,获取两个数据库中的数据。