【软件设计】大型项目中用到的DAO模式

DAO模式属于工厂模式的一种,而工厂模式是指定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

在使用Java开发M2人脸识别打卡项目中,需要将员工的面部信息储存在数据库中,以便在进行人脸打卡的过程中实时调用并对比。该项目用到了MySQl和SQL lite这两种数据库。这两者在对于某些数据的增删查改方面的细节有所不同,所以需要分开撰写其数据库连接的代码。

在日后使用该程序的过程中,可能会选择这两种数据库中的任意一种,这时候就需要对源代码进行更改。使用DAO模式则可以大大的简化更改代码这一步骤,具体实现的细节如下:

创建一个DAO包
创建一个名为com.mr.clock.dao的包
包名和包内的class文件
创建一个接口
创建一个名为dao的interface

package com.mr.clock.dao;

import java.util.Date;
import java.util.Set;

import com.mr.clock.pojo.Employee;
import com.mr.clock.pojo.User;
import com.mr.clock.pojo.WorkTime;

public interface DAO {
   
	/**
	 * *获取所有员工
	 * @return所有员工对象集合
	 */
public Set<Employee> getALLEmp();

/*
 * 根据员工编号获取员工对象
 * @param id 员工编号
 * @return 具体员工对象
 */

public Employee getEmp(int id);
/*
 * 根据员工吗获取员工对象
 * @param code 特征码
 * @return 具体员工对象
 */
public Employee getEmp(String code);

/*
 * 添加新员工
 * @param e 新员工对象
 */
public void addEmp(Employee e);

/*
 * 删除指定员工
 * @param e id 员工编号 
 */
public void deleteEmp(Integer id);

/*获取作息时间
*@ Return作息时间对象
*/
public WorkTime getWorkTime();


/*更新作息时间
@param time
*/
public void updateWorkTime(WorkTime time);

/*指定员工添加打卡记录
*@param empID员工编号
*@param now打卡日期
*/
public void addCLockInRecord(int empID, Date now);

/*删除指定员工所有打卡记录
@param emID员工编号
*/
public void deleteClockInRecord(int empID);

/*
*获取所有员工的打卡记录
*@Return左索引记录员工编号,右索引记录打卡日期
*/
public String[][] getAllClockInRecord();

/*验证管理员登录
*@param user管理员账号
*@Return如果账号密码正确,则返回rue,否则返回false
*/
public boolean userLogin(User user);
}

MySQl对接口的实现
包中的DAOMysqlimpl文件中定义了DAOMysqlImpl类,实现了DAO接口,代码如下:

package com.mr.clock.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import com.mr.clock.pojo.Employee;
import com.mr.clock.pojo.User;
import com.mr.clock.pojo.WorkTime;
import com.mr.clock.util.JDBCUtil;

public class DAOMysqlImpl implements DAO{
   
private Statement stmt;	
private Connection con;
private PreparedStatement ps;
private ResultSet rs;

	@Override
	public Set<Employee> getALLEmp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值