前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dao层和Mapper层

Dao层和Mapper层

作者头像
人不走空
发布2024-02-20 20:35:17
2430
发布2024-02-20 20:35:17
举报
文章被收录于专栏:学习与分享学习与分享
Mapper 层和 DAO(Data Access Object)层是在持久层中用于处理数据访问的两个概念。虽然这两者的目的都是用于访问数据库,但它们之间有一些区别。在Java开发中,这两个概念通常与MyBatis(或其他ORM框架)结合使用。

目录

Mapper层:

DAO层:

对比

其实用起来二者一样

Mapper层:

定义

  • Mapper 是 MyBatis 中的一个术语,指的是用于描述如何映射数据库中的数据到 Java 对象的接口。每一个 Mapper 接口对应一个数据操作接口。

职责

  • 定义了数据访问的接口,提供了一组数据库操作的方法。
  • 包含了与具体数据访问有关的 SQL 语句和映射规则。

注解

  • 通常使用 MyBatis 的注解或 XML 文件来描述 SQL 映射。

示例

代码语言:javascript
复制
// MyBatis Mapper 接口
public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id}")
    User getUserById(int id);
    
    @Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
    void insertUser(User user);
}

DAO层:

定义

  • DAO 是一个更通用的设计模式,用于封装与数据存储交互的逻辑。在Java中,通常指的是数据访问对象。

职责

  • 提供了一个抽象接口,定义了数据访问的方法。
  • 包含了数据访问的具体实现,可以是直接对数据库进行操作,也可以通过调用其他服务、API等方式进行数据访问。

注解

  • 通常不涉及注解,而是通过实现接口的方式来定义数据访问方法。

示例

代码语言:javascript
复制
// DAO 接口
public interface UserDao {
    User getUserById(int id);
    void insertUser(User user);
}

// DAO 实现
public class UserDaoImpl implements UserDao {
    // 数据库操作的具体实现
}

对比

技术栈

  • Mapper 通常与 MyBatis 等 ORM 框架结合使用。
  • DAO 是一个更通用的概念,可以用于任何形式的数据访问,包括直接 JDBC 操作、使用 ORM 框架、调用 RESTful API 等。

灵活性

  • Mapper 更侧重于数据映射和 SQL 操作,通常会与具体的 ORM 框架绑定。
  • DAO 层相对更加抽象,可以在不同的数据访问技术之间切换,提供更大的灵活性。

命名规范

  • Mapper 接口方法通常直接与 SQL 语句对应,方法名和 SQL 语句之间的映射关系更为直观。
  • DAO 接口方法可以根据业务逻辑进行更灵活的命名,而不受 SQL 语句的限制。

在实际项目中,Mapper 层和 DAO 层有时会交替使用或者同时存在,具体的选择会根据项目的需求、技术栈和团队的开发习惯而定。在使用 MyBatis 等 ORM 框架时,常常使用 Mapper 来定义数据库操作接口。

其实用起来二者一样

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mapper层:
  • DAO层:
  • 对比
  • 其实用起来二者一样
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档