Java DAO

发布时间 2023-12-13 00:19:23作者: kandhera

Java DAO模式(Data Access Object)是一种设计模式,用于将数据访问逻辑从业务逻辑中分离出来。它提供了一种通用的方式来访问和操作数据库中的数据。

简单示例:

public interface UserDao {  
    User findById(int id);  
    List<User> findAll();  
    void save(User user);  
    void update(User user);  
    void delete(int id);  
}

在这个示例中,我们定义了一个UserDao接口,它包含了访问和操作User数据的方法。这些方法可以包括查找、保存、更新和删除用户等操作。

接下来,我们需要实现这个接口。我们可以使用JDBC或者ORM框架(如Hibernate、MyBatis等)来实现DAO接口。下面是一个使用JDBC实现的示例:

import java.sql.*;  
  
public class JdbcUserDao implements UserDao {  
    private Connection connection;  
  
    public JdbcUserDao(Connection connection) {  
        this.connection = connection;  
    }  
  
    @Override  
    public User findById(int id) {  
        String sql = "SELECT * FROM users WHERE id = ?";  
        PreparedStatement statement = connection.prepareStatement(sql);  
        statement.setInt(1, id);  
        ResultSet resultSet = statement.executeQuery();  
        if (resultSet.next()) {  
            return new User(resultSet.getInt("id"), resultSet.getString("name"), resultSet.getString("email"));  
        } else {  
            return null;  
        }  
    }  
  
    @Override  
    public List<User> findAll() {  
        String sql = "SELECT * FROM users";  
        PreparedStatement statement = connection.prepareStatement(sql);  
        ResultSet resultSet = statement.executeQuery();  
        List<User> users = new ArrayList<>();  
        while (resultSet.next()) {  
            users.add(new User(resultSet.getInt("id"), resultSet.getString("name"), resultSet.getString("email")));  
        }  
        return users;  
    }  
  
    @Override  
    public void save(User user) {  
        String sql = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)";  
        PreparedStatement statement = connection.prepareStatement(sql);  
        statement.setInt(1, user.getId());  
        statement.setString(2, user.getName());  
        statement.setString(3, user.getEmail());  
        statement.executeUpdate();  
    }  
  
    @Override  
    public void update(User user) {  
        String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";  
        PreparedStatement statement = connection.prepareStatement(sql);  
        statement.setString(1, user.getName());  
        statement.setString(2, user.getEmail());  
        statement.setInt(3, user.getId());  
        statement.executeUpdate();  
    }  
  
    @Override  
    public void delete(int id) {  
        String sql = "DELETE FROM users WHERE id = ?";  
        PreparedStatement statement = connection.prepareStatement(sql);  
        statement.setInt(1, id);  
        statement.executeUpdate();  
    }  
}

总结:

Java DAO模式是一种常见的设计模式,用于将数据访问逻辑从业务逻辑中分离出来。通过使用DAO模式,我们可以将数据访问代码和业务逻辑代码进行解耦,提高代码的可读性、可维护性和可扩展性。在实际开发中,我们可以根据具体的需求选择合适的实现方式来实现DAO接口,如JDBC、Hibernate、MyBatis等。同时,我们还需要注意数据库连接的管理、异常处理等问题,以确保代码的稳定性和安全性。