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
配置,之后可以进行依赖注入。