package com.试试.lmis.util.dao;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.io.Serializable;
import java.util.List;
/**
* 通用类DAO
* @author Jackytang
*
*/
@SuppressWarnings({"unused", "unchecked"})
public class GenericDAOHibernate<T, PK extends Serializable> extends HibernateDaoSupport {
public T load(final Class entity, final PK id) {
return (T) this.getHibernateTemplate().load(entity, id);
}
public T get(final Class entity, final PK id) {
return (T) this.getHibernateTemplate().get(entity, id);
}
public List<T> findAll(final Class entity) {
return this.getHibernateTemplate().find("from " + entity.getName());
}
public List<T> findByNamedQuery(final String namedQuery) {
return this.getHibernateTemplate().findByNamedQuery(namedQuery);
}
public List<T> findByNamedQuery(final String query, final Object parameter) {
return this.getHibernateTemplate().findByNamedQuery(query, parameter);
}
public List<T> findByNamedQuery(final String query, final Object... parameters) {
return this.getHibernateTemplate().findByNamedQuery(query, parameters);
}
public List<T> find(final String query) {
return this.getHibernateTemplate().find(query);
}
public List<T> find(final String query, final Object parameter) {
return this.getHibernateTemplate().find(query, parameter);
}
public List<T> find(final String query, final Object[] parameters) {
return this.getHibernateTemplate().find(query, parameters);
}
public Long countByHQL(final String query, Object[] parameters) {
return (Long) this.find(query, parameters).get(0);
}
public List<T> findPageByHql(final String hql, final Object parameters[],
final int page, final int pageSize) {
return (List<T>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createQuery(hql);
if (parameters != null) {
for (int i = 0; i < parameters.length; i++) {
query.setParameter(i, parameters[i]);
}
}
query.setFirstResult(page * pageSize).setMaxResults(pageSize);
return query.list();
}
});
}
public void save(final T entity) {
this.getHibernateTemplate().saveOrUpdate(entity);
this.getHibernateTemplate().flush();
}
public void update(String hql, Object[] parameters) {
this.getHibernateTemplate().bulkUpdate(hql, parameters);
}
public void persist(final T entity) {
this.getHibernateTemplate().persist(entity);
this.getHibernateTemplate().flush();
}
public void merge(final T entity) {
this.getHibernateTemplate().merge(entity);
this.getHibernateTemplate().flush();
}
public void delete(final Class<T> entity, final PK id) {
Object object = this.get(entity, id);
this.getHibernateTemplate().delete(object);
this.getHibernateTemplate().flush();
}
public void flush() {
this.getHibernateTemplate().flush();
}
public void clear() {
this.getHibernateTemplate().clear();
}
}
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.io.Serializable;
import java.util.List;
/**
* 通用类DAO
* @author Jackytang
*
*/
@SuppressWarnings({"unused", "unchecked"})
public class GenericDAOHibernate<T, PK extends Serializable> extends HibernateDaoSupport {
public T load(final Class entity, final PK id) {
return (T) this.getHibernateTemplate().load(entity, id);
}
public T get(final Class entity, final PK id) {
return (T) this.getHibernateTemplate().get(entity, id);
}
public List<T> findAll(final Class entity) {
return this.getHibernateTemplate().find("from " + entity.getName());
}
public List<T> findByNamedQuery(final String namedQuery) {
return this.getHibernateTemplate().findByNamedQuery(namedQuery);
}
public List<T> findByNamedQuery(final String query, final Object parameter) {
return this.getHibernateTemplate().findByNamedQuery(query, parameter);
}
public List<T> findByNamedQuery(final String query, final Object... parameters) {
return this.getHibernateTemplate().findByNamedQuery(query, parameters);
}
public List<T> find(final String query) {
return this.getHibernateTemplate().find(query);
}
public List<T> find(final String query, final Object parameter) {
return this.getHibernateTemplate().find(query, parameter);
}
public List<T> find(final String query, final Object[] parameters) {
return this.getHibernateTemplate().find(query, parameters);
}
public Long countByHQL(final String query, Object[] parameters) {
return (Long) this.find(query, parameters).get(0);
}
public List<T> findPageByHql(final String hql, final Object parameters[],
final int page, final int pageSize) {
return (List<T>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createQuery(hql);
if (parameters != null) {
for (int i = 0; i < parameters.length; i++) {
query.setParameter(i, parameters[i]);
}
}
query.setFirstResult(page * pageSize).setMaxResults(pageSize);
return query.list();
}
});
}
public void save(final T entity) {
this.getHibernateTemplate().saveOrUpdate(entity);
this.getHibernateTemplate().flush();
}
public void update(String hql, Object[] parameters) {
this.getHibernateTemplate().bulkUpdate(hql, parameters);
}
public void persist(final T entity) {
this.getHibernateTemplate().persist(entity);
this.getHibernateTemplate().flush();
}
public void merge(final T entity) {
this.getHibernateTemplate().merge(entity);
this.getHibernateTemplate().flush();
}
public void delete(final Class<T> entity, final PK id) {
Object object = this.get(entity, id);
this.getHibernateTemplate().delete(object);
this.getHibernateTemplate().flush();
}
public void flush() {
this.getHibernateTemplate().flush();
}
public void clear() {
this.getHibernateTemplate().clear();
}
}