温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java DAO 数据访问对象怎么调用

发布时间:2026-07-24 21:45:41 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 中,DAO(Data Access Object,数据访问对象) 的核心思想是:

把对数据库的访问逻辑封装起来,业务层只关心“调用 DAO 的方法”,不关心 SQL 怎么写。

下面我用最常见、最清晰的方式给你讲:DAO 怎么写 + 怎么调用。


一、DAO 的典型结构

一般会分成三层:

Service 层(业务逻辑)
   ↓ 调用
DAO 层(数据访问)
   ↓ 操作
数据库(MySQL / Oracle 等)

二、DAO 示例(以 JDBC 为例)

1️⃣ 实体类(Entity / Model)

public class User {
    private int id;
    private String username;
    private String password;

    // getter / setter
}

2️⃣ DAO 接口(定义操作)

public interface UserDao {
    User findById(int id);
    void addUser(User user);
    void deleteUser(int id);
}

3️⃣ DAO 实现类(真正访问数据库)

public class UserDaoImpl implements UserDao {

    @Override
    public User findById(int id) {
        User user = null;
        String sql = "SELECT * FROM user WHERE id = ?";

        try (
            Connection conn = JDBCUtil.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql)
        ) {
            ps.setInt(1, id);
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return user;
    }

    @Override
    public void addUser(User user) {
        String sql = "INSERT INTO user(username, password) VALUES (?, ?)";

        try (
            Connection conn = JDBCUtil.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql)
        ) {
            ps.setString(1, user.getUsername());
            ps.setString(2, user.getPassword());
            ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void deleteUser(int id) {
        // 类似实现
    }
}

三、DAO 怎么调用(重点)

✅ 1. 在 Service 层调用 DAO(推荐方式)

public class UserService {

    private UserDao userDao = new UserDaoImpl();

    public void printUser(int id) {
        User user = userDao.findById(id);
        System.out.println(user.getUsername());
    }
}

✅ 业务层只管调用 DAO,不直接操作数据库


✅ 2. 如果你用的是 Spring(最常见)

DAO 层

@Repository
public class UserDaoImpl implements UserDao {
    // JDBC / MyBatis / JPA
}

Service 层

@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public User getUser(int id) {
        return userDao.findById(id);
    }
}

四、DAO 调用的核心流程总结

1. 创建 DAO 对象
2. 调用 DAO 的方法
3. DAO 内部执行 SQL
4. 返回结果给调用者

五、常见错误 ❌

❌ 在 Service 里直接写 SQL
❌ 在 JSP / Controller 里直接操作数据库
❌ DAO 里写业务逻辑

✅ DAO 只负责“增删改查”


六、常见 DAO 技术对比

技术 说明
JDBC 原生,最底层
MyBatis 最常用,SQL 可控
JPA / Hibernate 面向对象,SQL 少

如果你愿意,我可以:

  • ✅ 用 MyBatis DAO 示例
  • ✅ 用 Spring Boot + DAO
  • ✅ 画一张 调用流程图
  • ✅ 解释 DAO vs Mapper 区别

你现在是 普通 Java 项目 / Spring / Spring Boot 哪种?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手