📜  JDBC 使用模型对象和单例类(1)

📅  最后修改于: 2023-12-03 15:16:39.024000             🧑  作者: Mango

JDBC 使用模型对象和单例类

JDBC 是 Java 数据库连接的简称,作为 Java 编程语言的一部分,提供了一组标准的 Java 接口,用于访问关系型数据库(如 MySQL、Oracle、Microsoft SQL Server 等)。

使用 JDBC 时,我们需要将 Java 应用程序与数据库进行连接,创建数据库连接对象,通过连接对象执行 SQL 语句,以及处理数据库返回的结果集。在这个过程中,我们可以使用连接池技术提高连接的复用和效率。

JDBC 使用模型对象和单例类,是使用 JDBC 时常见的两种概念。下面分别介绍。

一、JDBC 使用模型对象

JDBC 使用模型对象,指的是将数据库表中的数据,映射到 Java 对象中进行操作。这样做的好处是,可以减少手动拼装 SQL 语句的工作量,同时增加程序的可读性和可维护性。

具体实现时,可以定义一个 Java 类作为模型对象,用于描述数据库表的结构。类中的属性对应数据库表中的列,类中的方法对应对数据库表的增删改查操作。

以下是一个示例代码,演示如何定义一个简单的模型对象:

public class User {
    private int id;
    private String name;
    private int age;
    // 构造函数、getter 和 setter 略
}

在实际应用中,我们还需要编写数据访问层代码,将模型对象与 JDBC API 进行整合。在查询记录时,将查询结果封装为模型对象,并返回给调用者。在更新记录时,将模型对象转换为 SQL 语句,并通过 JDBC API 执行更新操作。

下面是一个示例代码,演示如何使用模型对象查询用户信息:

public class UserDao {
    public List<User> getAllUsers() throws SQLException {
        String sql = "SELECT id, name, age FROM users";
        List<User> userList = new ArrayList<>();
        try (Connection conn = getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(sql)) {
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                userList.add(user);
            }
        }
        return userList;
    }
}

上述代码中,getConnection() 方法是获取数据库连接的工具方法,调用 JDBC 的 Connection 对象中的 createStatement() 方法创建 SQL 语句执行器,通过 executeQuery() 方法执行 SQL 语句,并将结果集封装为模型对象。

二、JDBC 使用单例类

JDBC 使用单例类,指的是将数据库连接对象采用单例模式进行管理,提高连接的复用和效率。在单例类的设计中,JDBC 连接池对象只被创建一次,多个线程共享使用,避免了频繁创建和销毁连接的开销。

以下是一个示例代码,演示如何使用单例类管理数据库连接对象:

public class DbUtils {
    private static DataSource dataSource = null;
    static {
        try {
            Properties props = new Properties();
            props.setProperty("driverClassName", "com.mysql.jdbc.Driver");
            props.setProperty("url", "jdbc:mysql://localhost:3306/test");
            props.setProperty("username", "root");
            props.setProperty("password", "123456");
            dataSource = BasicDataSourceFactory.createDataSource(props);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
}

上述代码中,DbUtils 类通过静态代码块实现对数据库连接池对象的初始化,使用 BasicDataSourceFactory 工厂类创建 DataSource 对象,实现对数据库连接池的统一管理。getConnection() 方法通过 DataSource 对象的 getConnection() 方法获取数据库连接对象。

在实际应用中,我们调用 DbUtils 类的 getConnection() 方法来获取数据库连接对象,从而实现对单例类的调用和数据库连接的获取。

以上是 JDBC 使用模型对象和单例类的基本介绍,希望能对大家理解 JDBC 的使用有所帮助。