学习使用泛型dao

(1)泛型接口GenericDao


public interface GenericDao <T, ID extends Serializable>{   

public T findById(ID id);

T findById(ID id, boolean lock);

public T load(ID id);

List findAll();

List findByExample(T exampleInstance);

T save(T entity);

void update(T entity);

void delete(T entity);
}


(2)泛型接口实现GenericDaoImpl


public abstract class GenericDaoImpl <T, ID extends Serializable>  
extends HibernateDaoSupport implements GenericDao <T, ID>{


private Class persistentClass;

public GenericDaoImpl() {
this.persistentClass = (Class) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}


public Class getPersistentClass() {
return persistentClass;
}


@SuppressWarnings("unchecked")
public T findById(ID id) {
return (T) getHibernateTemplate().get(getPersistentClass(), id);
}


@SuppressWarnings("unchecked")
public T load(ID id){
T t = (T)getHibernateTemplate().load(getPersistentClass(), id);
return t;
}

@SuppressWarnings("unchecked")
public T findById(ID id, boolean lock) {
T entity;
if (lock)
entity = (T) getHibernateTemplate().load(getPersistentClass(), id,
LockMode.UPGRADE);
else
entity = findById(id);

return entity;
}


public List findAll() {
return findByCriteria();
}


@SuppressWarnings("unchecked")
public List findByExample(T exampleInstance) {
DetachedCriteria detachedCrit = DetachedCriteria
.forClass(getPersistentClass());
Example example = Example.create(exampleInstance);
detachedCrit.add(example);
return getHibernateTemplate().findByCriteria(detachedCrit);
}


@SuppressWarnings("unchecked")
public List findByExample(T exampleInstance, String[] excludeProperty) {
DetachedCriteria detachedCrit = DetachedCriteria
.forClass(getPersistentClass());
Example example = Example.create(exampleInstance);
for (String exclude : excludeProperty) {
example.excludeProperty(exclude);
}


detachedCrit.add(example);
return getHibernateTemplate().findByCriteria(detachedCrit);
}


public T save(T entity) {
getHibernateTemplate().saveOrUpdate(entity);
return entity;
}


public void update(T entity){
getHibernateTemplate().update(entity);
}

public void delete(T entity) {
getHibernateTemplate().delete(entity);
}


@SuppressWarnings("unchecked")
protected List findByCriteria(Criterion... criterion) {
DetachedCriteria detachedCrit = DetachedCriteria
.forClass(getPersistentClass());
for (Criterion c : criterion) {
detachedCrit.add(c);
}
return getHibernateTemplate().findByCriteria(detachedCrit);
}
}


(3)CustomersDao


public interface CustomersDao extends GenericDao <Customers,Integer>{

}


(4)CustomersDaoImpl


public class CustomersDaoImpl extends GenericDaoImpl <Customers,Integer> implements CustomersDao{

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值