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

本文介绍了DAO设计模式的概念及其在数据层操作中的应用优势,并详细展示了BaseDao接口的设计及其实现类,同时还提供了CustomerDao接口及其实现的具体示例,最后通过一个测试案例展示了如何使用这些接口进行基本的数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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);
		
	}

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值