在 Java 中實現資料訪問物件

Sarwan Soomro 2024年2月15日
  1. 瞭解 Java 中的資料訪問物件
  2. 在 Java 中連線到 MySQL 伺服器
  3. MySQL 資料庫中資料訪問物件的 Java 實現
在 Java 中實現資料訪問物件

我們將建立一個新的資料庫 mydbproducts 表來展示使用 Java 中的 DAO 實時實現資料插入。

我們的 DAO 模型能夠動態地使用 CRUD 應用程式。它使用 mysql-connector-java-8.0.22JDBS 驅動進行資料庫連線。

它成功地抽象了物件的底層資料訪問實現,以提供對資料的透明訪問。

瞭解 Java 中的資料訪問物件

我們將使用這種模式來實現我們與 DAO 的介面。這個模型是一個可以管理抽象資料來源的自定義但功能齊全的 Java 資料訪問物件的粗略表示。

假設你要更改資料庫操作。你需要做的就是修改主類。

在這種情況下,我們的主類被定義為 JDBC 演示。

DAO 模式:

DAO 模型

我們不會在一開始就讓你感到困惑。因此,我們將儘可能簡單地構建一個邏輯,而不是複製和貼上,而是建立你的介面。

也就是說,這是我們的 product 類,它包含通過在主類中丟擲的建構函式傳遞的產品值,該建構函式是本示例中為 addProduct 的函式物件的例項。

// Product class
class Product {
  int id;
  String name;
  // add more values
}

然後,我們有一個介面,它使用資料訪問物件模式來管理我們的資料庫。讓我們暫時保持它的重要性。

檢視一個可以將產品新增到資料庫表的簡單函式。

public static void main(String[] args) {
  // Now let us insert new product
  // constructor PDAO class
  // objects
  ProDAO dao2 = new ProDAO(); // constructor
  Product pro = new Product(); // constructor
  // values to insert
  // dynamically modify values from here later
  pro.id = 3;
  pro.name = "Oppo LOL";
  // we have created a separate function for the db connection
  dao2.Dbconnect();
  // it is set to addProduct as of now, you can run CRUD directly from here
  dao2.addProduct(pro);
}

這是我們將在實現程式碼部分執行的 DAO 的典型演示。

請注意,我們將在 MySQL 中建立一個資料庫,然後我們將使用 MySQL 聯結器 jar 檔案與 SQL 伺服器連線。

注意
你將需要一個 MySQL 伺服器來在你的系統上實現此程式碼。

不用擔心!因為我們還將向你展示如何使用 CLI 建立資料庫。

如果你使用的是 Windows 作業系統:

建立新的資料庫和表

注意
這是從 MySQL 開始的完美方式。它將允許你理解結構查詢,因為它們應該被理解。

但是,你可以使用諸如 MySQL WorkbenchSQL YogphpMyAdmin 之類的 GUI 來建立你喜歡的資料庫。

在 Java 中連線到 MySQL 伺服器

保持透視並避免髒程式碼。我們將建立一個單獨的資料庫函式。

// Database Connection will use jdbc driver from the mysql connector jar
public void Dbconnect() {
  try {
    Class.forName("com.mysql.cj.jdbc.Driver"); // Mysql Connector's JDBC driver is loaded
    // connection to mysql
    con = DriverManager.getConnection(
        "jdbc:mysql://localhost/mydb", "root", ""); // URL, database name after
    // localhost, user name,
    // password
  } catch (Exception ex) {
    System.out.println(ex);
  }
}

你可以將此連線用於你的 MySQL 專案。不要忘記,如果你使用的是舊版本的 Java,請使用 Class.forName("com.mysql.jdbc.Driver"); 用於載入 JDBC。

MySQL 資料庫中資料訪問物件的 Java 實現

首先,它有助於正確構建路徑以避免執行時出現異常和警告。

通過右鍵單擊你的 Java 專案、構建路徑和配置 jar 檔案,可以避免頻繁出現的錯誤。只需確保你的構建路徑如下圖所示。

jar 檔案的構建路徑配置

如果你的概念很清楚,你就會理解我們模型的以下 DAO 實現。儘管如此,我們已經為你評論了程式碼的每個元素。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

// This Data Access Object DAO is a dynamic way to handle database records.

// main class
class DAOexample {
  public static void main(String[] args) {
    // Now let us insert new product
    // constructor PDAO class
    // objects
    ProDAO dao2 = new ProDAO(); // constructor
    Product pro = new Product(); // constructor
    // values to insert
    // dynamically modify values from here later
    pro.id = 3;
    pro.name = "Oppo LOL";
    // we have created a separate function for the db connection
    dao2.Dbconnect();
    // it is set to addProduct as of now, you can run CRUD directly from here
    dao2.addProduct(pro);
  }
}

class ProDAO {
  Connection con = null;

  // Database Connection will use jdbc driver from the mysql connector jar
  public void Dbconnect() {
    try {
      Class.forName("com.mysql.cj.jdbc.Driver");
      // connection to mysql
      con = DriverManager.getConnection(
          "jdbc:mysql://localhost/mydb", "root", ""); // URL, database name after
      // localhost, user name,
      // password
    } catch (Exception ex) {
      System.out.println(ex);
    }
  }

  // We will use the insert operation in this function, its conductor is already
  // declared in the main class (DAO)
  public void addProduct(Product p) { // this function will insert values
    // insert query
    // using prepared statements
    String query2 = "insert into products values (?,?)";
    try {
      PreparedStatement pst;
      pst = con.prepareStatement(query2);
      pst.setInt(1, p.id);
      pst.setString(2, p.name); //
      pst.executeUpdate(); // executeUpdate is used for the insertion of the data
      System.out.println("Inserted!");
    } catch (Exception ex) {
    }
  }
}

// Product class
class Product {
  int id;
  String name;
  // add more values
}

輸出:

使用資料訪問物件插入新值

如果你仍有任何疑問,我們會提供此實現的完整 zip 資料夾,其中包含 jar 檔案以及配置你的第一個 DAO 所需的一切。

作者: Sarwan Soomro
Sarwan Soomro avatar Sarwan Soomro avatar

Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.

LinkedIn

相關文章 - Java Object