在 Java 中實現資料訪問物件
我們將建立一個新的資料庫 mydb
和 products
表來展示使用 Java 中的 DAO 實時實現資料插入。
我們的 DAO 模型能夠動態地使用 CRUD 應用程式。它使用 mysql-connector-java-8.0.22
的 JDBS 驅動
進行資料庫連線。
它成功地抽象了物件的底層資料訪問實現,以提供對資料的透明訪問。
瞭解 Java 中的資料訪問物件
我們將使用這種模式來實現我們與 DAO 的介面。這個模型是一個可以管理抽象資料來源的自定義但功能齊全的 Java 資料訪問物件的粗略表示。
假設你要更改資料庫操作。你需要做的就是修改主類。
在這種情況下,我們的主類被定義為 JDBC 演示。
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 伺服器連線。
不用擔心!因為我們還將向你展示如何使用 CLI 建立資料庫。
如果你使用的是 Windows 作業系統:
但是,你可以使用諸如 MySQL Workbench
、SQL Yog
、phpMyAdmin
之類的 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
檔案,可以避免頻繁出現的錯誤。只需確保你的構建路徑如下圖所示。
如果你的概念很清楚,你就會理解我們模型的以下 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 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