DAO设计模式:(二)具体类对应接口 + 类对象接口的实现

实现类文件名字为 Emp

DAO设计模式的环境准备_Mrs.Code的博客-CSDN博客

具体类对应的DAO接口为 IEmpDAO

public interface IEmpDAO extends IDAO<T ,K >{
    
}

T 和 K要修改为与Emp类相关的参数 ,修改如下:

public interface IEmpDAO extends IDAO<Emp ,Integer >{
    // IDAO <T,K>
    // T是 对象 这里应该具体为 Emp对象
    // K是 id,id是int类型

}

这里还可以新增 DAO的操作功能 ,比如:getCount(统计数据库中有多少的数据)

Emp对象的DAO实现命名为 IEmpDAOImpl

增删改查的具体实现(要根据上面的类写对应的方法)

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * @description:
 * @aythor: willer
 * @time: 2022-10-29 15:48
 */
public class EmpDAOImpl implements IEmpDAO{
    Connection conn;
    PreparedStatement pst;
    // 有参构造器
    // 到时候 要传跟数据库连接相关的进来

//    emp
//    empno
//    ename
//    job
//    hiredate
//    sal
//    comm

    public EmpDAOImpl(Connection conn) throws Exception{
        this.conn=conn;
    }

    @Override
    public int doCreate(Emp vo) throws Exception{
        // 本质是更新
        // 返回1  那就是更新成功
        int rs=0;
        String sql = "insert emp(empno,ename,job,hiredate,sal,comm) values (?,?,?,?,?)";
        pst=conn.prepareStatement(sql);
        pst.setInt(1,vo.getEmpno());
        pst.setString(2,vo.getEname());
        pst.setString(3,vo.getJob());
        pst.setDate(4,new java.sql.Date(vo.getHiredate().getTime()));
        pst.setDouble(5,vo.getSal());
        pst.setDouble(6,vo.getSal());

        rs=pst.executeUpdate();
        return rs;
    }

    @Override
    public int doRemove(Integer id) throws Exception{
        int rs=0;
        String sql="delete from emp where empno = ? ";
        pst= conn.prepareStatement(sql);
        pst.setInt(1,id);
        rs=pst.executeUpdate();
        return rs;
    }

    @Override
    public int doUpdate(Emp vo) throws Exception{
        int rs=0;
        String sql = "update emp set ename=?,job=?,hiredate=?,sal=?,comm=? where empno=?";
        pst= conn.prepareStatement(sql);

        pst.setString(1,vo.getEname());
        pst.setString(2,vo.getJob());
        pst.setDate(3,new java.sql.Date(vo.getHiredate().getTime()));
        pst.setDouble(4,vo.getSal());
        pst.setDouble(5,vo.getSal());
        pst.setInt(6,vo.getEmpno());
        rs=pst.executeUpdate();
        return rs;
    }

    @Override
    public List<Emp> findAll() throws Exception{
        List<Emp> list = null;
        String sql ="select * from empno";
        pst=conn.prepareStatement(sql);
        ResultSet rs= pst.executeQuery(sql);

        rs=pst.executeQuery();
        while(rs.next()) {
//            不知道怎么添加了???
//            ans.add(rs);

            if(list==null) {
                list = new ArrayList<Emp>();
            }
            Emp vo = new Emp();
            vo.setEmpno(rs.getInt(1));
            vo.setEname(rs.getString(2));
            vo.setJob(rs.getString(3));
            vo.setHiredate(rs.getDate(4));
            vo.setSal(rs.getDouble(5));
            vo.setComm(rs.getDouble(6));
            list.add(vo);

        }
        return list;
    }

    @Override
    public Emp findById(Integer id) throws Exception{
        Emp vo = null;
        String sql="select * from emp where empno = ?";
        pst=conn.prepareStatement(sql);
        pst.setInt(1,id);
        ResultSet rs = pst.executeQuery();
//                不知道啊???
//        List<Emp> ans = new ArrayList<Emp>(pst.executeQuery(sql));
        while(rs.next()) {



            vo = new Emp();
            vo.setEmpno(rs.getInt(1));
            vo.setEname(rs.getString(2));
            vo.setJob(rs.getString(3));
            vo.setHiredate(rs.getDate(4));
            vo.setSal(rs.getDouble(5));
            vo.setComm(rs.getDouble(6));


        }

        return vo;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值