package com.bjdream.common;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseDao extends HibernateDaoSupport implements IBaseDao {
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#add(java.lang.Object)
*/
public void add(Object obj) {
getHibernateTemplate().save(obj);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#update(java.lang.Object)
*/
public void update(Object obj) {
getHibernateTemplate().update(obj);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#del(java.lang.Object)
*/
public void del(Object obj) {
getHibernateTemplate().delete(obj);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#findAll(java.lang.Class)
*/
public List findAll(Class c) {
return getHibernateTemplate().loadAll(c);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#findById(java.lang.Class, java.io.Serializable)
*/
public Object findById(Class c, Serializable id) {
return getHibernateTemplate().get(c, id);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#loadById(java.lang.Class, java.io.Serializable)
*/
public Object loadById(Class c, Serializable id) {
return getHibernateTemplate().load(c, id);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#delById(java.lang.Class, java.io.Serializable)
*/
public void delById(Class c, Serializable id) {
del(findById(c, id));
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#bulkUpdateOrDel(java.lang.String, java.lang.Object)
*/
public void bulkUpdateOrDel(String hql, Object... obj) {
getHibernateTemplate().bulkUpdate(hql, obj);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#queryPage(java.lang.String, java.lang.Integer, java.lang.Integer, java.lang.Object)
*/
public List queryPage(final String hql, final Integer page,
final Integer size, final Object... obj) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
if (obj != null) {
for (int i = 0; i < obj.length; i++) {
query.setParameter(i, obj[i]);
}
}
if (page != null && size != null) {
query.setFirstResult((page - 1) * size).setMaxResults(size);
}
return query.list();
}
});
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#findByHql(java.lang.String, java.lang.Object)
*/
public List findByHql(String hql, Object... obj) {
return getHibernateTemplate().find(hql, obj);
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#findBySql(java.lang.String, java.lang.Object)
*/
public List findBySql(final String sql, final Object... obj) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery squery = session.createSQLQuery(sql);
if (obj != null) {
for (int i = 0; i < obj.length; i++) {
squery.setParameter(i, obj);
}
}
return squery.list();
}
});
}
/* (non-Javadoc)
* @see com.bjdream.common.IBaseDao#findMaxMin(java.lang.String, java.lang.Object)
*/
public Object findMaxMin(final String hql,final Object... obj) {
return getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
if(obj!=null){
for (int i = 0; i < obj.length; i++) {
query.setParameter(i, obj[i]);
}
}
return query.uniqueResult();
}
});
}
}