JDBC插件式数据库连接器

在上一篇文章(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)

3. connector-oracle

Oracle 数据库连接的具体实现模块。

  • 目录 : connector-oracle/src/main/java/cn/daydayup/dev/connection/oracle

  • 功能:

    • Oracle 数据源适配器 (Oracle)

4. connector-postgresql

PostgreSQL 数据库连接的具体实现模块。

  • 目录 : connector-postgresql/src/main/java/cn/daydayup/dev/connection/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));
    }
}

希望本文档能帮助您快速了解并上手使用!

相关推荐
阿里-于怀2 分钟前
AgentScope AutoContextMemory:告别 Agent 上下文焦虑
android·java·数据库·agentscope
OpenTiny社区3 分钟前
TinyPro v1.4.0 正式发布:支持 Spring Boot、移动端适配、新增卡片列表和高级表单页面
java·前端·spring boot·后端·开源·opentiny
lonelyhiker4 分钟前
IDEA未编译完就启动项目的问题
java·ide·intellij-idea
数据库那些事儿6 分钟前
从极速复制“死了么”APP,看AI编程时代的技术选型
数据库
月入2k没钱吃饭没得朋友还被迫加班9 分钟前
meterSphere二开遇到的问题
java
aloha_78910 分钟前
langchain4j如何使用mcp
java·人工智能·python·langchain
岁岁种桃花儿10 分钟前
MySQL知识汇总:讲一讲MySQL中Select语句的执行顺序
数据库·mysql·database
小希smallxi19 分钟前
Java 程序调用 FFmpeg 教程
java·python·ffmpeg
李慕婉学姐21 分钟前
【开题答辩过程】以《基于Java的周边游优选推荐网站的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言
计算机毕设指导629 分钟前
基于微信小程序民宿预订管理系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven