一 点睛
针对目前数据层的需求分析情况,数据层共定义了10个接口,其中一个父接口,定义了DAO的公共操作接口,其中包含可能出现的常用操作方法;9个数据层接口对应相关业务层不同业务的数据层接口,另外它们都继承了IDAO父接口。
二 数据层接口名称和作用
接口名称 | 接口作用 |
IDAO | 父接口,其中定义了DAO的公共操作接口。 |
IActionDAO | 权限数据操作。 |
IClientDAO | 客户数据操作。 |
IGroupsDAO | 权限组数据操作。 |
ILogsDAO | 日志数据操作。 |
IMemberDAO | 客户管理数据操作。 |
IMemberNewsDAO | 公告管理数据操作。 |
INewsDAO | 暂未实现。 |
IRoleDAO | 角色管理数据操作。 |
ITaskDAO | 任务管理业务操作。 |
三 数据层接口在项目结构中的位置
四 数据层接口
1 IDAO
/**
* 定义DAO的公共操作接口,其中包含可能出现的常用操作方法
* @author mldn
* @param <K> 主键类型
* @param <V> VO的类型
*/
public interface IDAO<K,V> {
/**
* 实现数据的增加操作,要执行INSERT语句
* @param v 包含要增加数据的VO对象
* @return 如果增加成功,返回true,否则返回false
* @throws Exception
*/
public boolean doCreate(V vo) throws Exception ;
/**
* 数据的修改操作,执行UPDATE语句,此数据修改指的是表中的全部字段都要根据ID进行修改
* @param v 要修改的数据的VO对象
* @return 如果修改成功,返回true,否则返回false
* @throws Exception
*/
public boolean doUpdate(V vo) throws Exception ;
/**
* 执行数据的删除操作,主要以批量删除为主,利用IN进行SQL的拼凑删除
* @param ids 要删除的数据的ID编号,不允许重复
* @return 删除成功返回true,如果有数据没有被删除掉返回false
* @throws Exception
*/
public boolean doRemove(Set<K> ids) throws Exception ;
/**
* 数据的全部列表显示
* @return 所有的数据行都要转换为VO类的形式返回,如果没有数据则集合的长度为0(size()==0)
* @throws Exception
*/
public List<V> findAll() throws Exception ;
/**
* 根据ID查询一条完整的记录,并且将记录信息转换为VO类对象返回
* @param id 要查询的数据ID编号
* @return 如果有指定ID内容,则将内容以VO的形式返回,如果没有数据则返回null
* @throws Exception
*/
public V findById(K id) throws Exception ;
/**
* 执行数据的分页查询
* @param column 模糊查询的列
* @param keyWord 模糊查询关键字
* @param currentPage 当前所在页
* @param lineSize 每页显示的数据行数
* @return 所有的数据行都要转换为VO类的形式返回,如果没有数据则集合的长度为0(size()==0)
* @throws Exception
*/
public List<V> findAllSplit(String column,String keyWord,Integer currentPage,Integer lineSize) throws Exception ;
/**
* 统计满足于模糊查询的数据量,使用COUNT()函数统计
* @param column 模糊查询的列
* @param keyWord 模糊查询关键字
* @return 数据行数,如果没有数据行则返回0
* @throws Exception
*/
public Integer getAllCount(String column,String keyWord) throws Exception ;
}
2 IActionDAO
public interface IActionDAO extends IDAO<Integer, Action> {
/**
* 根据权限组的编号查询出对应的所有权限信息
* @param gid 权限组编号
* @return 所有该权限组对应的权限信息,以List集合返回,如果没有数据则集合长度为0
* @throws Exception
*/
public List<Action> findAllByGroups(Integer gid) throws Exception ;
/**
* 根据权限组编号查询出所有的权限信息
* @param gid 查询一组GID的信息
* @return 返回的是Map集合,key为权限编号,而value是权限的内容
* @throws Exception
*/
public Map<String,Action> findAllByGroups(Set<Integer> gid) throws Exception ;
/**
* 根据指定的角色编号以及权限编号查询该权限内容是否存在
* @param rid 角色编号
* @param actid 权限编号
* @return 如果存在则返回指定的权限对象,如果不存在,则返回null
* @throws Exception
*/
public Action findByRoleAndId(Integer rid,Integer actid) throws Exception ;
}
3 IClientDAO
public interface IClientDAO extends IDAO<Integer, Client> {
/**
* 根据指定的用户编号分页显示该用户所有的客户信息
* @param mid 查看用户的编号
* @param type 用户的类型
* @param column
* @param keyWord
* @param currentPage
* @param lineSize
* @return
* @throws Exception
*/
public List<Client> findAllSplitByMemberAndType(String mid,Integer type,String column,String keyWord,Integer currentPage,Integer lineSize) throws Exception ;
/**
* 统计一个用户的所有客户量
* @param mid
* @param column
* @param keyWord
* @return
* @throws Exception
*/
public Integer getAllCountByMemberAndType(String mid,Integer type,String column,String keyWord) throws Exception ;
/**
* 将针对于指定用户的信息进行更新处理
* @param vo 包含有指定的用户信息
* @return
* @throws Exception
*/
public boolean doUpdateByMember(Client vo) throws Exception ;
/**
* 必须保证根据指定的用户名来查询出该用户的客户信息
* @param mid 用户名
* @param id 客户id
* @return
* @throws Exception
*/
public Client findByMemberAndId(String mid,Integer id) throws Exception ;
/**
* 删除指定用户的客户信息
* @param mid 当前的用户
* @param cids 所有的客户编号
* @return 删除成功返回true,否则返回false
* @throws Exception
*/
public boolean doRemoveByMember(String mid,Set<Integer> cids) throws Exception ;
/**
* 根据用户类型查看所有的用户信息
* @param type
* @param column
* @param keyWord
* @param currentPage
* @param lineSize
* @return
* @throws Exception
*/
public List<Client> findAllSplitByType(Integer type,String column,String keyWord,Integer currentPage,Integer lineSize) throws Exception ;
/**
* 根据客户类型统计出客户的数量
* @param type
* @param column
* @param keyWord
* @return
* @throws Exception
*/
public Integer getAllCountByType(Integer type,String column,String keyWord) throws Exception ;
/**
* 根据指定的用户名以及客户编号,来判断该客户是否属于指定的用户
* @param mid 用户ID
* @param cid 客户ID
* @return 如果该客户属于指定用户,则返回true,否则返回false
* @throws Exception
*/
public boolean findExistsByMemberAndCid(String mid,Integer cid) throws Exception ;
/**
* 根据一组的客户ID信息查询所有的客户信息
* @param id 要查询的客户ID
* @return key为cid,value为name
* @throws Exception
*/
public Map<Integer,String> findByIds(Set<Integer> id) throws Exception ;
/**
* 根据用户名称以及任务的状态统计出数据量
* @param mid
* @param status
* @return
* @throws Exception
*/
public Integer getAllCountByMemberAndStatus(String mid,Integer status) throws Exception ;
}
4 IGroupsDAO
public interface IGroupsDAO extends IDAO<Integer, Groups> {
/**
* 根据角色编号查询出所有的权限组信息
* @param rid 角色编号
* @return 如果该角色存在有权限组内容,则以List集合的方式返回
* @throws Exception
*/
public List<Groups> findAllByRole(Integer rid) throws Exception ;
/**
* 查询权限组的全部信息
* @return key = 类型、value = Groups的VO对象
* @throws Exception
*/
public Map<String,List<Groups>> findAllByType() throws Exception ;
}
5 IMemberDAO
public interface IMemberDAO extends IDAO<String, Member> {
/**
* 实现用户的登录检测,登录的时候只允许登录活跃用户(locked = 0),但是随后要求将用户的管理员标记取出
* 传入的是一个VO类对象,那么可以利用引用传递的概念,通过VO类对象取回flag数据
* @param vo 包含有用户名和密码的VO类
* @return 如果登录成功返回true,否则返回false
* @throws Exception
*/
public boolean findLogin(Member vo) throws Exception ;
/**
* 更新指定ID的最后一次的登录日期时间
* @param id 用户id
* @return
* @throws Exception
*/
public boolean doUpdateLastdate(String id) throws Exception ;
/**
* 更新用户密码
* @param mid 要修改的用户id
* @param password 用户的新密码
* @return 更新成功返回true,否则返回false
* @throws Exception
*/
public boolean doUpdatePassword(String mid,String password) throws Exception ;
}
6 IMemberNewsDAO
public interface IMemberNewsDAO extends IDAO<MemberNews, MemberNews> {
/**
* 统计出指定用户对于指定公告的阅读记录数
* @param mid
* @param nid
* @return
* @throws Exception
*/
public Integer getAllCountByMemberAndNews(String mid,Integer nid) throws Exception ;
/**
* 统计出指定用户未读取的消息数量
* @param mid 用户ID
* @return 未读的消息数量
* @throws Exception
*/
public Integer getAllCountUnread(String mid) throws Exception ;
/**
* 通过member_news表中查询出所有未读的消息的编号,结果通过Map集合保存
* @param ids
* @return
* @throws Exception
*/
public Map<Integer,Boolean> findAllNotId(String mid,Set<Integer> ids) throws Exception ;
}
7 IRoleDAO
public interface IRoleDAO extends IDAO<Integer, Role> {
/**
* 取得最后一次增长的rid数据
* @return
* @throws Exception
*/
public Integer findLastId() throws Exception ;
/**
* 保存一个Role对象,里面一定要包含有角色编号以及对应的权限组编号
* @param vo
* @return
* @throws Exception
*/
public boolean doCreateRoleAndGropus(Role vo) throws Exception ;
/**
* 查询role_groups表,而后根据此表中角色编号查询出所有的权限组编号
* @param rid
* @return key = gid、value = true
* @throws Exception
*/
public Map<Integer,Boolean> findGroupsByRole(Integer rid) throws Exception ;
/**
* 删除role_groups表中指定角色对应的所有权限组的关系
* @param rid 角色编号
* @return
* @throws Exception
*/
public boolean doRemoveRoleAndGroups(Integer rid) throws Exception ;
}
8 ITaskDAO
public interface ITaskDAO extends IDAO<Integer, Task> {
/**
* 根据用户以及指定的客户编号查询出一个客户的所有的任务信息,但是查询的时候是按照任务的完成时间倒序排列
* @param mid 用户编号
* @param cid 客户编号
* @return 所有当前用户的客户的任务信息以集合的方式返回
* @throws Exception
*/
public List<Task> findAllByMemberAndClient(String mid,Integer cid) throws Exception ;
/**
* 根据用户以及指定的客户编号查询出一个客户的所有的任务信息,但是查询的时候是按照任务的完成时间倒序排列
* @param cid 客户编号
* @return 所有当前用户的客户的任务信息以集合的方式返回
* @throws Exception
*/
public List<Task> findAllByClient(Integer cid) throws Exception ;
/**
* 根据用户的编号、客户编号、任务编号查询详情
* @param mid 用户编号
* @param cid 客户编号
* @param tid 任务编号
* @return 任务的信息存在则以VO的形式返回,否则返回null
* @throws Exception
*/
public Task findById(String mid,Integer cid,Integer tid) throws Exception ;
/**
* 根据指定的用户名以及任务编号查询出任务的具体信息
* @param mid
* @param tid
* @return
* @throws Exception
*/
public Task findById(String mid,Integer tid) throws Exception ;
/**
* 进行指定用户的任务列表显示处理操作
* @param mid 用户编号
* @param visit 回访模式
* @param type 用户的状态
* @param column 列名称
* @param keyWord 关键字
* @param currentPage 当前所在页
* @param lineSize 每页的显示行数
* @return 以List集合的方式返回部分查询结果
* @throws Exception
*/
public List<Task> findAllSplitByMember(String mid, Integer visit,
Integer type, String column, String keyWord, Integer currentPage,
Integer lineSize) throws Exception;
/**
* 指定类型任务的数据量统计
* @param mid 用户编号
* @param visit 回访模式
* @param type 用户的状态
* @param column 列名称
* @param keyWord 关键字
* @return
* @throws Exception
*/
public Integer getAllCountByMember(String mid, Integer visit,
Integer type, String column, String keyWord) throws Exception ;
/**
* 进行指定用户的任务列表显示处理操作
* @param visit 回访模式
* @param type 用户的状态
* @param column 列名称
* @param keyWord 关键字
* @param currentPage 当前所在页
* @param lineSize 每页的显示行数
* @return 以List集合的方式返回部分查询结果
* @throws Exception
*/
public List<Task> findAllSplit(Integer visit,
Integer type, String column, String keyWord, Integer currentPage,
Integer lineSize) throws Exception;
/**
* 指定类型任务的数据量统计
* @param mid 用户编号
* @param visit 回访模式
* @param type 用户的状态
* @param column 列名称
* @param keyWord 关键字
* @return
* @throws Exception
*/
public Integer getAllCount(Integer visit,
Integer type, String column, String keyWord) throws Exception ;
/**
* 更新指定用户的任务信息,更新的时候要求同时判断mid与tid
* @param vo
* @return
* @throws Exception
*/
public boolean doUpdateByMember(Task vo) throws Exception ;
/**
* 根据指定的用户编号更新指定任务的状态值
* @param mid 用户编号
* @param tid 任务编号
* @param status 状态(status = 0 表示关闭、status = 2表示完成)
* @return
* @throws Exception
*/
public boolean doUpdateByStatus(String mid, Integer tid, Integer status)
throws Exception;
/**
* 删除指定用户的任务信息
* @param mid
* @param tids
* @return
* @throws Exception
*/
public boolean doRemoveByMember(String mid,Set<Integer> tids) throws Exception ;
/**
* 统计出该日期之前未完成的任务量
* @param mid
* @param date
* @return
* @throws Exception
*/
public Integer getAllCountByBeforeUnFinish(String mid,Date date) throws Exception ;
/**
* 统计出该日期之后待完成的任务量
* @param mid
* @param date
* @return
* @throws Exception
*/
public Integer getAllCountByAfterFinish(String mid,Date date) throws Exception ;
}