maven项目如何配置数据库连接依赖?jar包引入与配置步骤详解

在Java项目中,使用Maven管理依赖并连接数据库是常见开发场景,以下是详细步骤及注意事项,涵盖依赖配置、数据库驱动加载、连接池使用及代码示例。

添加数据库依赖

首先在pom.xml中添加数据库驱动和连接池依赖,以MySQL为例,常用依赖如下:

<!-- MySQL驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>
<!-- 连接池(如HikariCP) -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>

不同数据库的驱动选择
| 数据库 |groupId|artifactId|示例版本|
|————–|——-|———-|——–|
|MySQL 5.x |mysql |mysql-connector-java|5.1.49|
|MySQL 8.x |mysql |mysql-connector-java|8.0.28|
|PostgreSQL |org.postgresql|postgresql|42.3.3|
|Oracle |com.oracle.database.jdbc|ojdbc8|19.3.0.0|
|SQL Server |com.microsoft.sqlserver|mssql-jdbc|9.4.0.jre11|

配置数据库连接参数

src/main/resources目录下创建application.propertiesconfig.properties文件,存储连接信息:

maven 怎么链接数据库

# 数据库基础配置
db.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
db.username=root
db.password=your_password
db.driver=com.mysql.cj.jdbc.Driver
# 连接池配置(HikariCP示例)
db.pool.maximum-pool-size=10
db.pool.minimum-idle=5
db.pool.connection-timeout=30000
db.pool.idle-timeout=600000
db.pool.max-lifetime=1800000

参数说明

  • db.url:包含协议、主机、端口、数据库名及连接参数(如时区设置)。
  • useSSL:开发环境可禁用SSL以避免警告。
  • serverTimezone:避免时区不匹配报错。

编写数据库连接工具类

通过连接池管理数据库连接,避免频繁创建销毁连接,以下是使用HikariCP的示例代码:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DBUtil {
    private static HikariDataSource dataSource;
    static {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC");
        config.setUsername("root");
        config.setPassword("your_password");
        config.setDriverClassName("com.mysql.cj.jdbc.Driver");
        // 连接池优化配置
        config.setMaximumPoolSize(10);
        config.setMinimumIdle(5);
        config.setConnectionTimeout(30000);
        config.setIdleTimeout(600000);
        config.setMaxLifetime(1800000);
        dataSource = new HikariDataSource(config);
    }
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
    public static void closeConnection(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

关键点

maven 怎么链接数据库

  1. 使用静态代码块初始化连接池,确保单例模式。
  2. 通过getConnection()获取连接,使用后需手动关闭(或尝试-with-resources语法)。

数据库操作示例

以下为查询和更新数据的完整示例:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
    public void getUserById(int id) {
        String sql = "SELECT * FROM users WHERE id = ?";
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setInt(1, id);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println("Username: " + rs.getString("username"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public void updateUser(int id, String newEmail) {
        String sql = "UPDATE users SET email = ? WHERE id = ?";
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setString(1, newEmail);
            pstmt.setInt(2, id);
            int affectedRows = pstmt.executeUpdate();
            System.out.println("Updated rows: " + affectedRows);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

注意事项

  1. 预编译语句(PreparedStatement):防止SQL注入,提高性能。
  2. 资源释放:使用try-with-resources自动关闭ConnectionPreparedStatementResultSet
  3. 事务管理:需手动提交或回滚事务(默认为自动提交)。

常见问题排查

  1. 驱动加载失败:检查pom.xml中依赖是否正确下载,driverClassName是否与驱动版本匹配。
  2. 连接超时:确认数据库服务是否启动,网络是否可达,检查连接池超时参数。
  3. 时区错误:在URL中添加serverTimezone=UTC或指定本地时区(如Asia/Shanghai)。

相关问答FAQs

Q1: Maven下载依赖时提示“下载失败”怎么办?
A: 可能原因包括网络问题、仓库配置错误或依赖版本不存在,解决方法:

maven 怎么链接数据库

  1. 检查网络连接,尝试更换镜像源(如阿里云镜像)。
  2. pom.xml中添加阿里云仓库配置:
    <repositories>
        <repository>
            <id>aliyun</id>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>
  3. 验证依赖版本号是否正确,可通过Maven中央仓库查询。

Q2: 数据库连接泄露如何避免?
A: 连接泄露未关闭会导致连接池耗尽,解决方法:

  1. 始终使用try-with-resources语法确保资源释放:
    try (Connection conn = DBUtil.getConnection();
         Statement stmt = conn.createStatement()) {
        // 执行SQL
    } // 自动关闭
  2. 监控连接池状态,通过HikariCP的MBean或日志跟踪未释放连接。
  3. 避免在代码中缓存Connection对象,每次使用后立即释放。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-09-23 12:33
下一篇 2025-09-23 13:04

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信