使用 JAVA 开发企业应用程序时都会涉及到对象的持久化操作,为了降低业务逻辑操作的耦合度,通常需要创建大量的DAO对象。 Dao 对象主要功能就是实现CRUD,其实也就是增删改查操作。在设计过程中我们常常需要花费大量的时间重复定义上述的方法。那么有没有一种设计,可以减少这些重复操作呢,这就是我要给大家分享的内容。利用JDK5引入的 泛型 语法,实现一个通用的DAO对象,充分提交代码的复用性。下面DAO的实现以 Mybatis 为 ORM框架 ,当然也适用于其他的ORM框架。
通用DAO接口就是在底层设计一个BaseDao接口,这个DAO接口里面抽象了一些Dao接口都会用到的基本方法比如:添加、修改、删除、查询等方法,在定义接口时通过泛型,然后可以让不同的实现类在实现时通过泛型来指定各自的数据类型,从而实现各自数据库表的增删改查操作。
BaseDAO接口
通常一个底层DAO最基本的操作就是实现对象的保存、修改、查询、删除操作。因此我们在BaseDAO接口定义以下方法:
上面是通用的BaseDao接口的定义,为了测试是否可以通用,达到效果,接下来以员工表操作为例,采用 Spring +Mybatis框架对员工进行增删改查,继续定义 Service 层和Test测试操作。
EmployeeOperMapper接口
继承BaseDao 接口,把BaseDao 接口的方法继承过来。
EmployeeMapper.xml文件
定义和接口方法对应的 sql语句 。
BaseService接口
定义增删改查(CRUD)的方法
EmployeeOperService接口
定义EmployeeOperService接口,继承上面的BaseService接口。
BaseServiceImpl类
实现上面的BaseService接口。
EmployeeServiceImpl实现类
继承BaseServiceImpl类,并注入dao 层的Mapper接口。
测试类EmployeeOperTest
最后定义测试类,测试定义的增删改查方法,是否可用。
以上在集成 junit 环境下测试都已通过,说明设计的通用的底层BaseDao接口已经完成。