package commmm;

import java.util.List;

/**
 * @author 冀帅
 * @date 2020/8/14-15:46
 * DAO:data(base) access object 数据访问对象
 */
public class DAO <T>{
    //添加一条记录
    public  void  add(T t){

    }

    //删除一条记录
    public  boolean remove(int index){
        return  false;
    }

    //修改一条记录
    public  void update(int index,T t){

    }

    //查询一条记录
    public  T getIndex(int index){
        return  null;
    }

    //查询多条记录
    public List<T> getForList(int index){
        return  null;
    }
    //泛型方法
    //举例:获取一个表中一共有多少条记录?E=Long
//          获取最大的员工入职时间?E=Date
    public <E> E getValue(){
        return  null;
    }
}

package commmm;

/**
 * @author 冀帅
 * @date 2020/8/14-15:52
 */
public class Customer {//此类对应数据库中customers表
}
package commmm;

/**
 * 一张表对应一个类
 * @author 冀帅
 * @date 2020/8/14-15:53
 */
public class CustomerDAO extends DAO<Customer> {//只能操作某一个表的DAO
}
package commmm;

/**
 * @author 冀帅
 * @date 2020/8/14-16:00
 */
public class Student {//此类对应数据库中student 表
}

package commmm;

/**
 * @author 冀帅
 * @date 2020/8/14-16:01
 */
public class StudentDAO extends DAO<Student> {//只能操作某一个表的DAO
}
package commmm;

import org.junit.Test;

import java.util.List;

/**
 * @author 冀帅
 * @date 2020/8/14-15:57
 */

public class DAOTest {
    @Test
    public  void  test1(){
        CustomerDAO dao1 = new CustomerDAO();
        //只能操作Customer类型的
        dao1.add(new Customer());
        List<Customer> list = dao1.getForList(10);


        StudentDAO dao2 = new StudentDAO();
        //只能操作Student类型的
        Student student = dao2.getIndex(1);
    }
}