在 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 所需的一切。
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,