📄 generichibernatedao.java
字号:
package dao;
import java.io.Serializable;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import dao.GenericDAO;
public class GenericHibernateDAO<T, ID extends Serializable>
extends HibernateDaoSupport implements GenericDAO<T, ID> {
public Log log = LogFactory.getLog(GenericHibernateDAO.class);
private Class<T> persistentClass;
public GenericHibernateDAO(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
public Class<T> getPersistentClass() {
return persistentClass;
}
@SuppressWarnings("unchecked")
public T findById(ID id, boolean lock) {
T entity;
if (lock)
entity = (T) getHibernateTemplate().get(getPersistentClass(), id, LockMode.UPGRADE);
else
entity = (T) getHibernateTemplate().get(getPersistentClass(), id);
return entity;
}
@SuppressWarnings("unchecked")
public List<T> findAll() {
DetachedCriteria crit = DetachedCriteria.forClass(persistentClass);
return getHibernateTemplate().findByCriteria(crit);
}
@SuppressWarnings("unchecked")
public List<T> findAllInQuantities(int firstResult, int maxResults) {
DetachedCriteria crit = DetachedCriteria.forClass(persistentClass);
return getHibernateTemplate().findByCriteria(crit, firstResult, maxResults);
}
@SuppressWarnings("unchecked")
public List<T> findByExample(T exampleInstance, String... excludeProperty) {
return findByExampleInQuantities(-1, -1, exampleInstance, excludeProperty);
}
@SuppressWarnings("unchecked")
public List<T> findByExampleInQuantities(int firstResult, int maxResults,
T exampleInstance, String... excludeProperty) {
Example example = Example.create(exampleInstance);
for (String exclude : excludeProperty) {
example.excludeProperty(exclude);
}
example.enableLike(MatchMode.ANYWHERE);
example.excludeZeroes();
DetachedCriteria crit = DetachedCriteria.forClass(persistentClass).add(example);
//crit.add(example);
List<T> results = getHibernateTemplate().findByCriteria(crit, firstResult, maxResults);
return results;
}
protected List findByExample(int firstIndex, int maxResults,
Object exampleInstance, String... excludeProperty) {
Example example = Example.create(exampleInstance);
for (String exclude : excludeProperty) {
example.excludeProperty(exclude);
}
example.enableLike(MatchMode.ANYWHERE);
example.excludeZeroes();
DetachedCriteria crit = DetachedCriteria.forClass(
exampleInstance.getClass()).add(example);
//crit.add(example);
List results = getHibernateTemplate().findByCriteria(crit, firstIndex,
maxResults);
return results;
}
@SuppressWarnings("unchecked")
public T makePersistent(T entity) {
getHibernateTemplate().saveOrUpdate(entity);
return entity;
}
public void makeTransient(T entity) {
getHibernateTemplate().delete(entity);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -