DAO接口

DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 像直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。
DAO(Data Access Object)是一个数据访问接口,夹在业务逻辑与数据库资源中间。
DAO(数据访问对象)是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。
J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的业务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码。

DAO模式是标准的J2EE设计模式之一.开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开.一个典型的DAO实现有下列几个组件:
  1. 一个DAO工厂类;

  2. 一个DAO接口;

  3. 一个实现DAO接口的具体类;

  4. 数据传递对象(有些时候叫做值对象).

具体的DAO类包含了从特定的数据源访问数据的逻辑。在下面的这段中你将学到设计和实现数据访问对象的技术。

事务划分:

关于DAO要记住的一件重要事情是它们是事务性对象。每个被DAO执行的操作(对象创建,更新、或删除数据)都是和事务相关联的。同样的,事务划分(transaction demarcation)的概念是特别重要的。

事务划分是在事务界定定义中的方式。J2EE规范为事务划分描述了两种模式:编程性事务(programmatic)和声明性事务(declarative).下表是对这两种模式的拆分:
声明性事务划分 编程性事务划分
程序员使用EJB的部署描述符声明事务属性 程序员担负编写事务逻辑代码的责任。
运行时环境(EJB容器)使用这些属性来自动的管理事务。应用程序通过一个API接口来控制事务。
在DAO中是完全的面向对象的。其实面向对象的最初思想就是将数据和操作封装在一起,形成对象,而在DAO中正是体现了这一点,它将数据的值作为属性,数据的查询作为方法,数据值的变化作为事件,完全封装在DAO对象中。

二、数据访问对象DAO的功能

  1. DAO用来封装Data Source的..就比如,Connection conn = DAOFactory.createConnection()..

就可以把Driver. URL. username,passpword这一些放在DAO中

以后要更改数据库的类型.比如要把MYSQL换成Oracle的话..只需要更改DAOFactory里面的getConnection()里面的Driver.URL.之类的..

  1. DAO也是把对数据库的操作(比如最基本的CRUD操作)全部封装在里面..

比如说你要插入一个新的用户..那么.在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了..具体的操作是在DAO中实现的…

那么对于要调用DAO的时候.我们只要知道insertUser(User)是用来插入一个新的用户…而不需要知道是如何实现的..

一般 DAO是与Abstract Factory模式一起来用的…

Factory来建立数据库和定位具体的DAO(比如说是UserDao..CustomerDao..)..一般将getConnection设置为static..也可以把HibernateSessionFactory这一个公共类放在这一AbstractFactory类中去…

下面是一个示例展示如何在 MyBatis-Plus 中使用 `baomidou` 进行分页的 DAO 接口定义: ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.entity.User; public interface UserDao extends BaseMapper<User> { /** * 自定义分页查询方法 * @param page 分页参数 * @return 分页结果 */ IPage<User> selectUserPage(Page<User> page); } ``` 在上述示例中,`UserDao` 继承了 `BaseMapper<User>`,该接口提供了一些基本的 CRUD 方法。然后,我们自定义了一个 `selectUserPage` 方法,用于实现自定义的分页查询。 在具体的实现类中,可以使用 MyBatis-Plus 提供的 `selectPage` 方法来进行分页查询: ```java import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.dao.UserDao; import com.example.entity.User; import com.example.service.UserService; import org.springframework.stereotype.Service; @Service public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserService { @Override public IPage<User> selectUserPage(Page<User> page) { return baseMapper.selectUserPage(page); } } ``` 在上述示例中,`UserServiceImpl` 实现了自定义的 `selectUserPage` 方法,通过调用 `baseMapper.selectUserPage(page)` 实现了分页查询。 这样,你就可以在业务层调用 `selectUserPage` 方法来进行分页查询了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值