在上一篇文章(Java大模型MCP服务端开发-数据库查询与数据分析(附源码)_java实现数据库查询mcp-CSDN博客),我们使用Java开发了一个数据库查询的MCP服务。最一开始MCP服务只支持MySQL数据库的查询。为了支持更广泛的数据库类型,我又开发了一个通用的JDBC数据库连接器,旨在提供灵活且高效的数据库连接管理能力,使得开发者能够轻松应对多变的数据源管理环境。
源码地址
daydayup-zyn/db-connector: JDBC插件式数据库连接组件,旨在为开发者提供灵活且高效的数据库连接管理能力。
设计思路
- 模块化设计,支持多种数据库类型的插件式连接,易于扩展;
- 易用性强,提供简洁明了的API;
- 广泛的兼容性:,支持包括MySQL、Oracle、PostgreSQL在内的主流数据库;
项目结构
项目采用 Maven 进行构建管理,包含以下主要模块:
1. connector-core
核心模块,提供数据源连接的基础功能和工具类。
-
目录 :
connector-core/src/main/java/cn/daydayup/dev/connection/core
-
功能:
- 数据源抽象类 (
AbstractDataSource
,AbstractJdbcDataSource
) - 数据库连接工具 (
DatabaseConnection
,JdbcDataSource
) - 配置管理工具 (
Configuration
) - 连接池实现 (
JdbcConnectionPool
)
- 数据源抽象类 (
2. connector-mysql
MySQL 数据库连接的具体实现模块。
-
目录 :
connector-mysql/src/main/java/cn/daydayup/dev/connection/mysql
-
功能:
- MySQL 数据源适配器 (
Mysql
)
- MySQL 数据源适配器 (
3. connector-oracle
Oracle 数据库连接的具体实现模块。
-
目录 :
connector-oracle/src/main/java/cn/daydayup/dev/connection/oracle
-
功能:
- Oracle 数据源适配器 (
Oracle
)
- Oracle 数据源适配器 (
4. connector-postgresql
PostgreSQL 数据库连接的具体实现模块。
-
目录 :
connector-postgresql/src/main/java/cn/daydayup/dev/connection/postgresql
-
功能:
- PostgreSQL 数据源适配器 (
Postgresql
)
- PostgreSQL 数据源适配器 (
5. connector-test
测试模块,用于验证核心功能的正确性。
-
目录 :
connector-test/src/main/java/cn/daydayup/dev/connection/test
-
功能:
- 数据源连接测试 (
MysqlTest
,OracleTest
,PostgresqlTest
)
- 数据源连接测试 (
功能介绍
1. 核心功能
- 数据源抽象接口 (
DataSource
): 定义了数据源的基本操作接口,所有具体数据库的实现都基于此接口。 - 数据库连接工具 (
DatabaseConnection
): 提供了数据库连接的创建、管理和释放功能。 - 配置管理工具 (
Configuration
): 支持多级 JSON 配置信息的无损存储和读取,便于动态调整连接参数。 - 连接池实现 (
JdbcConnectionPool
): 实现了高效的数据库连接池管理,减少频繁创建和销毁连接的开销。
2. 数据库适配器
- 适配器接口 (
Adapter
): 定义了数据源适配器的基本规范,方便扩展支持新的数据库类型。 - 具体适配器实现 :
Mysql
: 提供了对 MySQL 数据库的支持。Oracle
: 提供了对 Oracle 数据库的支持。Postgresql
: 提供了对 PostgreSQL 数据库的支持。
3. 工具类
- 类加载器切换工具 (
ClassLoaderSwapper
): 用于避免 jar 包冲突问题,支持在不同版本的依赖之间切换。 - 常量定义 (
ConnectingPoolConstants
): 定义了连接池相关的参数常量,便于统一管理和配置。
快速开始
1. 构建项目
确保已安装 JDK 17 和 Maven,然后执行以下命令:
bash
mvn clean install
2. 使用示例
2.1 添加依赖
在项目的 pom.xml
中添加以下依赖:
xml
<dependency>
<groupId>cn.daydayup.dev</groupId>
<artifactId>connector-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2.2 添加数据库驱动依赖
在项目根目录创建mysql
文件夹,将mysql-jar-with-dependencies.jar
放入其中。如需连接其他数据库,则需创建其数据库类型的文件夹xxx
,并将xxx-jar-with-dependencies.jar
放入其中。
2.3 示例代码
以下是一个简单的使用示例:
java
import cn.daydayup.dev.connection.core.adapter.DatabaseAdapter;
import cn.daydayup.dev.connection.core.database.AbstractJdbcDataSource;
import com.alibaba.fastjson2.JSON;
import org.apache.commons.lang3.tuple.Pair;
import java.util.List;
public class Main {
public static void main(String[] args) {
String config = """
{
"username": "root",
"password": "123456",
"type": "mysql",
"host": "10.8.10.xxx",
"port": "3306",
"schema": "xxx",
"driver-class-name": "com.mysql.cj.jdbc.Driver",
"jdbcUrl": "jdbc:mysql://10.8.10.xxx:3306/xxx?useSSL=false"
}
""";
DatabaseAdapter adapter = DatabaseAdapter.getAdapter();
adapter.setConfig(config);
AbstractJdbcDataSource dataSource = (AbstractJdbcDataSource) adapter.getDataSource();
Pair<List<String>, List<List<String>>> allTables = dataSource.getAllTableInfo();
System.out.println(JSON.toJSONString(allTables));
}
}
希望本文档能帮助您快速了解并上手使用!