在 Java 中實現資料訪問物件

Sarwan Soomro 2023年1月30日 2022年4月26日
  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 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