、引用茶叶写的一个baseDAO
然后自己写一个dao类来继承basedao
package com.juno.dao.service;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;
/**
* 所有Dao类的父类
*
* @author macrotea 2011-2-31
* @param <T>
*/
@Component("baseDao")
public class BaseDao<T, ID> extends HibernateDaoSupport {
private static final Logger logger = LoggerFactory.getLogger(BaseDao.class);
/**
* 设置Dao将操作的实体
*/
private Class<T> entityClazz;
public Class<T> getEntityClazz() {
return entityClazz;
}
public void setEntityClazz(Class<T> entityClazz) {
this.entityClazz = entityClazz;
}
public BaseDao() {
super();
}
public BaseDao(Class<T> entityClazz) {
this.entityClazz = entityClazz;
}
/**
* 设置hibernateTemplate所需的SessionFactory
*/
@Resource
public void setLocalSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
/**
* 获得所有实体记录
*/
@SuppressWarnings("unchecked")
public List<T> findAll() throws Exception {
return getHibernateTemplate().find("FROM " + entityClazz.getSimpleName());
}
/**
* 保存一个实体
*/
@SuppressWarnings("unchecked")
public ID save(T obj) throws Exception {
return (ID) getHibernateTemplate().save(obj);
}
/**
* 保存/更新一个实体
*/
public void saveOrUpdate(T obj) throws Exception {
getHibernateTemplate().saveOrUpdate(obj);
}
/**
* 根据id获得一个实体
*/
@SuppressWarnings("unchecked")
public T findById(int id) throws Exception {
T retVal = (T) getHibernateTemplate().get(entityClazz, id);
if (retVal == null) {
logger.debug("get:该ID:" + id + " 的实体不存在!");
}
return retVal;
}
/**
* 根据id加载一个实体
*/
@SuppressWarnings("unchecked")
public T loadById(int id) throws Exception {
T retVal = (T) getHibernateTemplate().load(entityClazz, id);
return retVal;
}
/**
* 根据id删除一个实体
*/
public void deleteById(int id) throws Exception {
T entity = loadById(id);
if (entity == null) {
String msg = "delete:该ID:" + id + " 的实体不存在!";
throw new Exception(msg);
}
getHibernateTemplate().delete(entity);
}
/**
* 获得所有实体记录总数
*/
@SuppressWarnings("unchecked")
public Long countAll() throws Exception {
List retVal = getHibernateTemplate().find("SELECT count(*) FROM " + entityClazz.getSimpleName());
return (Long) retVal.get(0);
}
/**
* 根据属性和属性值查找
*/
@SuppressWarnings("unchecked")
public List findByProperty(String propertyName, Object value) throws Exception {
System.out.println("findByProperty value:" + value);
List retVal = getHibernateTemplate().find("from " + entityClazz.getSimpleName() + " as model where model." + propertyName + "= ?", value);
return retVal;
}
/**
* 根据多个id查找
*/
public List<T> findByIdArray(Integer[] idArray) throws Exception {
List<T> retVal = new ArrayList<T>();
T model = null;
for (int i = 0; i < idArray.length; i++) {
model = findById(idArray[i]);
retVal.add(model);
}
return retVal;
}
}
然后自己写一个dao类来继承basedao
package com.juno.dao.service.impl;
import org.springframework.stereotype.Component;
import com.juno.bean.Hello;
import com.juno.dao.service.BaseDao;
import com.juno.dao.service.HelloDAO;
/**
* @author Juno
*
*/
@Component("helloDao")
public class HelloDAOImpl extends BaseDao<Hello, Integer> implements HelloDAO {
// property constants
public static final String USERNAME = "username";
public static final String AGE = "age";
/*
* 如下方式调用父类方法:super.XXX()
*/
public HelloDAOImpl() {
super(Hello.class);
}
@Override
public void update(Hello Hello) throws Exception {
}
}
这时候、一定要记住加上
public HelloDAOImpl() {
super(Hello.class);
}
这个构造方法!要不无效!