谁有好的基于springjdbc的泛型dao,给大家分享下,项目中实际用的
谁有好的基于springjdbc的泛型dao,给大家分享下,项目中实际用的。 --------------------编程问答-------------------- --------------------编程问答-------------------- 基类接口:package com.lyan.dao;
import java.io.Serializable;
import java.util.Collection;
/*
* 封装底层dao有什么好处:
* 1、实现基本的数据库操作,减少代码量
* 2、基本操作都通过这一基类,便于维护
* 3、若基类满足不了用户要求扩展,可通过自身如DepartmentDao进行个性化扩展,延展性强
*/
public inte易做图ce BaseDao<T> {
public void addEntity(T t);
public void updateEntity(T t);
public void deleteEntity(Serializable id);
public T getEntityById(Serializable id);
public Collection<T> getAllEntitys();
}
基类接口实现:
package com.lyan.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.Collection;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.lyan.dao.BaseDao;
public class BaseDaoImpl<T> implements BaseDao<T>{
private HibernateTemplate hibernateTemplate;
private Class classt;
public BaseDaoImpl(){
ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();
classt = (Class)pt.getActualTypeArguments()[0];
System.out.println("***********"+pt.getOwnerType()+" , "+pt.getRawType()+"*********");
}
@Override
public void addEntity(T t) {
this.hibernateTemplate.save(t);
}
@Override
public void updateEntity(T t) {
this.hibernateTemplate.update(t);
}
@Override
public void deleteEntity(Serializable id) {
T t = this.getEntityById(id);
this.hibernateTemplate.delete(t);
}
@Override
public T getEntityById(Serializable id) {
return (T)this.hibernateTemplate.get(this.classt, id);
}
@Override
public Collection<T> getAllEntitys() {
return this.hibernateTemplate.find("from "+this.classt.getName());
}
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}
具体业务扩展接口:
package com.lyan.dao;
import com.lyan.bean.Department;
/**
* 这里的DepartmentDao可以不必继承BaseDao,不继承的话就是Service层不能直接访问BaseDao中的方法
* @author yanlei
*
* @param <T>
*/
public inte易做图ce DepartmentDao<T> extends BaseDao<T>{
//当基类接口不能满足业务,业务要个性化定制时,写在此处进行扩展
}
业务拓展接口的实现:
package com.lyan.dao.impl;
import com.lyan.bean.Department;
import com.lyan.dao.DepartmentDao;
public class DepartmentDaoImpl extends BaseDaoImpl<Department> implements DepartmentDao<Department> {
}
剩下的就是service层的调用,我就不在写了 --------------------编程问答-------------------- 您这是hibernate的,我要springjdbc的通用泛型dao,有吗?最好基类dao封装的完美些,具体业务dao就不需要了 --------------------编程问答-------------------- 基于SpringJdbc的泛型Daohttp://1194867672-qq-com.iteye.com/blog/1455814
补充:Java , Java EE