您的位置:首页 > 编程语言 > Java开发

Java --- Dao设计模式 --- 泛型

2017-12-14 16:52 417 查看
一、Dao设计模式

Dao设计模式是属于数据层的操作,使用Dao设计模式可以大量简化代码,增强程序的可移植性。

二、BaseDao接口

import java.io.Serializable;

public interface BaseDao<T> {
void add(T t);
void update(T t);
void deleteById(Serializable id); // String Integer 更加通用。联合主键
T findById(Serializable id);
}


三、CustomerDao接口

public interface CustomerDao extends BaseDao<Customer>{
List<Customer> findAll();
}


四、BaseDao接口实现类

//借助Hibernate框架
public class BaseDaoImpl<T> implements Dao<T> {
//核心类。Connection
//ORM:通过操作类,就相当于操作了数据库
//比如:操作Customer类,就相当于存取Customer表(Hibernate来做)
//操作Student类,就相当于存取Student表(Hibernate来做)
//private Session session;

private Class clazz;//实体类型,目的就是让Hibernate知道从哪个表中查数据
public BaseDaoImpl(){
//给成员变量clazz赋值,让BaseDao知道具体的操作的是什么类型的
Type type = this.getClass().getGenericSuperclass();//获取当前对象的带有泛型类型的父类  BaseDaoImpl<Customer>
ParameterizedType ptype = (ParameterizedType)type;
clazz = (Class)ptype.getActualTypeArguments()[0];
}

public void add(T t) {
//session.save(t);
}

public void update(T t) {
//session.update(t);
}

public void deleteById(Serializable id) {
//T t = findById(id);
//session.delete(t);
}

public T findById(Serializable id) {
System.out.println(clazz.getName());
//return (T)session.get(clazz, id);//第一个参数:操作的类的类型。第二个参数,主键
return null;
}

}


五、CustomerDao接口实现类

public class CustomerDaoImpl extends BaseDao<Customer> implements CustomerDao {

public List<Customer> findAll() {
return null;
}

}


六、Test

public class Test {

public static void main(String[] args) {
CustomerDao customerDao = new CustomerDaoImpl();

customerDao.add(null);
//...

customerDao.findById(1);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: