Dao层和Mapper层

简介: Dao层和Mapper层

Mapper 层和 DAO(Data Access Object)层是在持久层中用于处理数据访问的两个概念。虽然这两者的目的都是用于访问数据库,但它们之间有一些区别。在Java开发中,这两个概念通常与MyBatis(或其他ORM框架)结合使用。

Mapper层:

  1. 定义:
  • Mapper 是 MyBatis 中的一个术语,指的是用于描述如何映射数据库中的数据到 Java 对象的接口。每一个 Mapper 接口对应一个数据操作接口。
  1. 职责:
  • 定义了数据访问的接口,提供了一组数据库操作的方法。
  • 包含了与具体数据访问有关的 SQL 语句和映射规则。
  1. 注解:
  • 通常使用 MyBatis 的注解或 XML 文件来描述 SQL 映射。
  1. 示例:
// 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);
}
  1.  

DAO层:

  1. 定义:
  • DAO 是一个更通用的设计模式,用于封装与数据存储交互的逻辑。在Java中,通常指的是数据访问对象。
  1. 职责:
  • 提供了一个抽象接口,定义了数据访问的方法。
  • 包含了数据访问的具体实现,可以是直接对数据库进行操作,也可以通过调用其他服务、API等方式进行数据访问。
  1. 注解:
  • 通常不涉及注解,而是通过实现接口的方式来定义数据访问方法。
  1. 示例:
// DAO 接口
public interface UserDao {
    User getUserById(int id);
    void insertUser(User user);
}
// DAO 实现
public class UserDaoImpl implements UserDao {
    // 数据库操作的具体实现
}
  1. 对比
  2. 技术栈:
  • Mapper 通常与 MyBatis 等 ORM 框架结合使用。
  • DAO 是一个更通用的概念,可以用于任何形式的数据访问,包括直接 JDBC 操作、使用 ORM 框架、调用 RESTful API 等。
  1. 灵活性:
  • Mapper 更侧重于数据映射和 SQL 操作,通常会与具体的 ORM 框架绑定。
  • DAO 层相对更加抽象,可以在不同的数据访问技术之间切换,提供更大的灵活性。
  1. 命名规范:
  • Mapper 接口方法通常直接与 SQL 语句对应,方法名和 SQL 语句之间的映射关系更为直观。
  • DAO 接口方法可以根据业务逻辑进行更灵活的命名,而不受 SQL 语句的限制。

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

其实用起来二者一样

 

相关文章
|
网络协议 Windows
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
这篇文章提供了解决IDEA插件下载慢或超时问题的方案,通过查找国内插件节点IP地址并修改本地hosts文件来加速下载。
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
52393 16
|
XML 存储 JSON
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
5512 3
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
|
Java 数据库
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
9085 3
Springboot 根据数据库表自动生成实体类和Mapper,只需三步
|
监控 安全 测试技术
理解非功能需求---SRS软件需求规格指南系列
本文全面解析非功能需求(NFR),涵盖性能、安全性、可靠性、可用性、可扩展性等关键质量属性。内容包括定义、现实案例及最佳实践,帮助团队在软件开发生命周期中有效识别、记录与管理NFR,确保系统满足利益相关者期望与行业标准。
1151 3
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
3304 1
|
SQL JSON 前端开发
较为完整的SpringBoot项目结构
本文介绍了SpringBoot项目的分层结构与目录组成。项目分为四层:**controller层**(前端交互)、**service层**(业务逻辑处理)、**dao层**(数据库操作)和**model层**(实体类定义)。分层设计旨在实现关注点分离,降低耦合度,提高系统灵活性、可维护性和扩展性。此外,还详细说明了项目目录结构,包括`controller`、`service`、`dao`、`entity`、`param`、`util`等子目录的功能划分,便于团队协作开发。此架构有助于前后端分离,明确各模块职责,符合高内聚低耦合的设计原则。
7764 1
|
SQL Java 数据库连接
结合Spring和MyBatis实现DAO层操作综述
通过上述步骤,可以实现一个简洁、解耦和可维护性高的DAO层,利用Spring的功能强大之处,同时充分发挥MyBatis对SQL精细控制的优势。开发者可以实现快速开发,且能保持SQL语句的灵活性和清晰度。这种模式已经被证明是实践中非常高效和流行的企业级应用开发方式。
298 8
|
XML Java 数据库连接
MyBatis入门——MyBatis XML配置文件(3)
MyBatis入门——MyBatis XML配置文件(3)
933 6
|
SQL 前端开发 Java
Spring的三层架构
Spring MVC 三层架构(表现层、业务层、数据访问层)通过职责分离提升代码可维护性与扩展性。表现层(Controller)接收请求并返回响应;业务层(Service)处理核心逻辑与事务;数据访问层(Mapper)负责数据库操作与数据映射,共同实现高效、清晰的系统开发。
1768 0

热门文章

最新文章