13.3 实现DAO持久层
MyBatis建议定义接口完成SQL语句的映射,该接口可以直接作为DAO组件使用。使用DAO模式,既能体现业务逻辑组件封装DAO组件的门面模式,也可分离业务逻辑组件和DAO组件的功能:业务逻辑组件负责业务逻辑的变化,而DAO组件负责持久化技术的变化,这正是桥接模式的应用。
引入DAO模式后,每个DAO组件包含了数据库的访问逻辑:每个DAO组件可对一个数据库表完成基本的CRUD等操作.
13.3.1 公共常量类
HrmConstants.java
在HrmConstants类中定义了本系统中使用的常量。
13.3.2 定义DAO接口
UserDao接口
下面是UserDao接口的源代码。
在Userdao接口中使用了动态SQL提供类:UserDynasqlProvider.
UserDynaSqlProvider.java
通过上面的DAO接口完成数据库的操作,这种简单的实现较之传统的JDBC持久化访问方便。
DeptDao接口
下面是DeptDao接口的源代码:
JobDao接口
下面是JobDao接口的源代码。
在JobDao接口中使用了动态SQL提供类JobDynaSqlProvider。
JobDynaSqlProvider.java
EmployeeDao.java
下面是EmployeeDao接口的源代码。
在EmployeeDao接口中使用了动态SQL提供类EmployeeDynaSqlProvider。
EmployeeDynaSqlProvider.java
下面是NoticeDao接口的源代码。
NoticeDao接口
在Noticedao接口中使用了动态SQL提供类NoticeDynaSqlProvider:
NoticeDynaSqlProvider.java
下面是DocumentDao接口的源代码。
DocumentDao接口
在DocumentDao接口中使用了动态SL提供类DocumentDynaSqlProvider
DocumentDynaSqlProvider.java
13.3.3 部署DAO层
通过前面的介绍不难发现,MyBatis的持久化DAO接口只需要通过SqlSession的getMapper方法获得对应的接口实例,即可以调用接口的方法完成数据库操作。而在Spring和MyBatis整合的应用中,由Spring容器负责生成并管理DAO组件MyBatis社区自己开发了一个Mybatis-Spring中间件用来满足MyBatis用户整合Spring的需求。通过SqlSessionFactoryBean类,可以将SqlSessionFactory纳入IoC容器内。
在使用Spring管理DAO组件之前,必须要为其提供对应的数据源,本应用使用C3PO数据源.
db.properties
1 | dataSource.driverClass=com.mysql.jdbc.Driver |
配置了所需的数据源之后,程序就可以在此数据源基础上配置SqlSessionFactory对象。配置SqlSessionFactory的代码如下:
applicationContext.xml
1 |
|
<mybatis:scan base-package="org.fkit.hrm.dao"/>标签,会扫描org.fkit.hrm.dao包下面的所有接口作为Spring的Bean配置,之后可以进行依赖注入。