DAO模式 层次结构图
现在已经完成了数据库的连接与关闭(数据库连接类实现)、开发VO类(实体类),接下来我们需要进行数据层的开发。
首先,要明确一点:不同层之间如果要进行访问,必须提供有接口,以定义操作标准。
对于数据层而言,它最终要交给业务层执行,所以在数据层与业务层之间应该定义一个调用数据层的操作标准,即数据层接口。
对于数据层的接口给出如下开发要求:
1. 数据层既然是进行数据操纵的,那么将其保存在dao包下
2. 不同的数据表的操作有可能使用不同的数据层开发,那么数据层接口应针对于数据表进行命名(如针对emp表,其数据层接口定义为IEmpDAO)
3. 对于整个数据层的开发严格来讲只有两类功能:
数据更新:建议操作方法以doXxx()命名,如 增加doCreat()、修改doUpdate()、删除doRemove();
数据查询:(1)查询表中数据:以findXxx()命名,如 findById()、findByName()、findAll();
(2)统计表中数据:以getXxx()形式命名,如 getAllCount().
范例:定义IEmpDAO接口
代码不多,注释很多,但是开发过程中一定要按照以下形式写注释!
package com.fs.dao; import java.util.List; import java.util.Set; import com.fs.vo.Emp; /** * 实现emp表的数据层的操作标准 * 这次操作标准是根据需求文档分析出业务层,进而分析数据层所需要进行的原子操作 * 最后将原子操作定义为此接口中的方法 * @author 婉阿婉 */ public interface IEmpDAO { /** * 实现数据的增加操作 * @param vo 包含了要增加数据的VO对象 * @return 数据保存成功返回true,否则返回false * @throws Exception SQL执行异常等等(严格来讲可能产生的异常都要写出来) */ public boolean doCreate(Emp vo) throws Exception; /** * 实现数据的修改操作,根据id进行全部字段数据的修改 * @param vo 包含了要修改数据的信息,一定要提供有ID内容 * @return 数据修改成功返回true,否则返回false * @throws Exception SQL执行异常 */ public boolean doUpdate(Emp vo) throws Exception; /** * 实现数据的批量删除操作 * @param ids 包含了所有要删除的数据ID 不包含有重复内容 * @return 删除成功返回true(删除的数据个数与要删除的数据个数相同),否则返回false * @throws Exception SQL执行异常 */ public boolean doRemoveBatch(Set<Integer> ids) throws Exception; /** * 根据雇员编号查询指定的雇员信息 * @param id 要查询的雇员编号 * @return 如果雇员信息存在,将数据以VO类对象的形式返回;不存在则返回null * @throws Exception SQL执行异常 */ public Emp findById(Integer id) throws Exception; /** * 查询指定数据表的全部数据,并以集合的形式返回 * @return 如果表中有数据,则所有的数据会封装为VO类对象之后利用List集合返回<br> * 如果没有数据,那么集合的长度为0(size()==0 而不是null!) * @throws Exception SQL执行异常 */ public List<Emp> findAll() throws Exception ; /** * 分页进行数据的模糊查询,查询结果以集合的形式返回 * @param currentPage 当前所在的页 * @param lineSize 每页显示的数据行数 * @param column 要进行模糊查询的数据列 * @param keyWord 模糊查询的关键字 * @return 如果表中有数据,则所有的数据会封装为VO类对象之后利用List集合返回<br> * 如果没有数据,那么集合的长度为0(size()==0 而不是null!) * @throws Exception SQL执行异常 */ public List<Emp> findAllSplit(Integer currentPage,Integer lineSize,String column,String keyWord) throws Exception; /** * 进行模糊查询数据量的统计 * @param column 要进行模糊查询的数据列 * @param keyWord 模糊查询的关键字 * @return 返回表中的数据量,如果没有数据返回0 * @throws Exception SQL执行异常 */ public Integer getAllCount(String column,String keyWord) throws Exception ; }
数据层接口的目的是为了告诉业务层:在整个数据层中,能提供这些操作;而这些操作彼此间的整合就要求业务层负责处理。