Kết nối CSDL (JDBC) trong dự án Maven

Điều kiện cần:

Tạo CSDL OrderDB với tệp OrderDB.sql

  • Tải tệp / sao chép toàn bộ cầu lệnh OrderDB.sql về máy với tên tệp tương tự
  • Thực hiện lệnh sau để tạo CSDL cũng như các bảng và tài khoản kết nối vào CSDL:
    • Sử dụng lệnh mysql:
      $ mysql -u root -p < OrderDB.sql​
    • Sử dụng MySQL Workbench:
      • Tạo một truy vấn mới rồi sao chép toàn bộ lệnh trong tệp OrderDB.sql
      • Mở file OrderDB.sql nếu đã tải xuống
      • Chạy truy vấn với những câu lệnh vừa sao chép
  • Kiểm tra CSDL OrderDB và các bảng đã được tạo như ERD sau:

Tạo dự án Maven

Thêm thư viện kết nối CSDL MySQL phụ thuộc

  • Kiểm tra phiên bản MySQL đã được cài vào máy
    $ mysql --version​
  • Kiểm tra thư viện phụ thuộc tại liên kết sau: https://mvnrepository.com/artifact/mysql/mysql-connector-java
  • Click chuột vào phiên bản tương ứng với phiên bản MySQL vừa kiểm tra. Ví dụ: phiên bản mới nhất là 8.0.20
  • Thêm dependency vào file pom.xml
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.20</version>
    </dependency>​

Tạo lớp DdUtil để kết nối CSDL

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DbUtil {
    private static Connection connection;
    private static String url = "jdbc:mysql://localhost:3306/OrderDB";
    private static String user = "sinhnx";
    private static String password = "sinhnx.dev";

    public static Connection getConnection() throws SQLException {
        connection = DriverManager.getConnection(url, user, password);
        return connection;
    }

    public static Connection getConnection(String dbConfigFile) throws SQLException {
        try (FileInputStream f = new FileInputStream(dbConfigFile)) {
            // load the properties file
            Properties pros = new Properties();
            pros.load(f);
            // assign db parameters
            url = pros.getProperty("url");
            user = pros.getProperty("user");
            password = pros.getProperty("password");
            // create a connection to the database
            return getConnection();
        } catch (IOException e) {
            return null;
        }
    }
}

Kiểm tra kết nối đến CSDL

  • Kết nối CSDL với tham số cấu hình mặc định:
    public class App {
        public static void main(String[] args) {
            try (Connection con = dev.sinhnx.dal.DbUtil.getConnection();) {
                System.out.println("Connected to MySql Server.");
            } catch (SQLException ex) {
                System.out.println("Connection Error!");
            }
        }
    }​
  • Kết nối CSDL với tham số được cấu hình trong tệp orderDb.properties
    • Tạo tệp orderDb.properties (trong thư mục gốc của dự án maven)
    • Thêm nội dung vào tệp orderDb.properties:
      # MySQL DB parameters
      url=jdbc:mysql://localhost:3306/OrderDB
      user=sinhnx
      password=sinhnx.dev​
    • Kiểm tra kết nối với tệp vừa cấu hình:
      public class App {
          public static void main(String[] args) {
              try (Connection con = dev.sinhnx.dal.DbUtil.getConnection("./orderDb.properties");) {
                  System.out.println("Connected to MySql Server.");
              } catch (SQLException ex) {
                  System.out.println("Connection Error!");
              }
          }
      }​