Java连接OceanBase数据库

pom.xml中

<dependencies>
    <!-- 加入下面两项 -->
    <!-- mysql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>  <!-- 推荐 8.0+ 版本 -->
    </dependency>
    <dependency>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
      <version>3.4.5</version>
    </dependency>
  </dependencies>

创建dbOceanBase文件夹

创建 OcanBaseUtil.java

package com.JavaOceanBase.dbOceanBase;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * OceanBase 数据库连接工具类(基于 HikariCP 连接池)
 */
public class OceanBaseUtil {
    private static volatile HikariDataSource dataSource;

    // 私有构造方法(禁止外部实例化)
    private OceanBaseUtil() {}

    /**
     * 初始化连接池(线程安全)
     */
    private static void initDataSource() {
        if (dataSource == null) {
            synchronized (OceanBaseUtil.class) {
                if (dataSource == null) {
                    HikariConfig config = new HikariConfig();
                    config.setJdbcUrl("jdbc:mysql://192.168.1.145:2881/callcenter2_db_joincallcc");
                    config.setUsername("root");
                    config.setPassword("YourStrong@Password123");
                    // 优化配置
                    config.setMaximumPoolSize(10);      // 最大连接数
                    config.setConnectionTimeout(5000);   // 连接超时(毫秒)
                    config.setIdleTimeout(60000);        // 空闲超时
                    config.addDataSourceProperty("useSSL", "false");
                    config.addDataSourceProperty("serverTimezone", "UTC");
                    dataSource = new HikariDataSource(config);
                }
            }
        }
    }

    /**
     * 获取数据库连接
     */
    public static Connection getConnection() throws SQLException {
        if (dataSource == null) {
            initDataSource();
        }
        return dataSource.getConnection();
    }

    /**
     * 关闭连接池(应用退出时调用)
     */
    public static void closeDataSource() {
        if (dataSource != null && !dataSource.isClosed()) {
            dataSource.close();
            System.out.println("OceanBase 连接池已关闭");
        }
    }


}

App.java

package com.JavaOceanBase;
import com.JavaOceanBase.dbOceanBase.*;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) {
        System.out.println("Hello World!");

        try (Connection conn = OceanBaseUtil.getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SHOW DATABASES")) {

            System.out.println("连接 OceanBase 成功!");
            while (rs.next()) {
                System.out.println("数据库: " + rs.getString("Database"));
            }
        } catch (Exception e) {
            System.err.println("操作失败: " + e.getMessage());
            e.printStackTrace();
        } finally {
            OceanBaseUtil.closeDataSource(); // 应用结束时调用
        }

    }
}

运行结果:

 

posted @ 2025-06-03 14:30  海乐学习  阅读(36)  评论(0)    收藏  举报