package com.newvideo.dao; import java.io.Serializable; import java.util.List; import javax.annotation.Resource; import javax.transaction.Transactional; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.orm.hibernate4.HibernateTemplate; import org.springframework.stereotype.Repository; import jxl.common.Logger; @Repository public class BaseDao { Logger log = Logger.getLogger(BaseDao.class); @Resource private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } @Transactional public Serializable save(T object) { return hibernateTemplate.save(object); } @Transactional public void create(T object) { hibernateTemplate.persist(object); } @Transactional public void update(T object) { hibernateTemplate.update(object); } @Transactional public void delete(T object) { hibernateTemplate.delete(object); } public T find(Class clazz, Serializable id) { return (T) hibernateTemplate.get(clazz, id); } @SuppressWarnings("unchecked") public List list(String hql, Serializable... params) { return (List) hibernateTemplate.find(hql, params); } @SuppressWarnings({ "unchecked", "rawtypes" }) public List list(String hql, final int start, final int count, final Serializable[] params) { final String tempsql = hql; return (List) hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createQuery(tempsql); if (params != null) for (int i = 0; i < params.length; i++) { query.setParameter(i, params[i]); } query.setFirstResult(start); query.setMaxResults(count); log.info("list"); return query.list(); } }); } @SuppressWarnings("unchecked") public List list(String hql) { return (List) hibernateTemplate.find(hql); } // SQL @SuppressWarnings({ "rawtypes", "unchecked" }) public List sqlList(final String hql, final Serializable[] params) { return (List) hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createSQLQuery(hql); if (params != null) for (int i = 0; i < params.length; i++) { query.setParameter(i, params[i]); } log.info("sqlList"); return query.list(); } }); } @SuppressWarnings({ "rawtypes", "unchecked" }) public List sqlList(final String hql, final int start, final int count, final Serializable[] params) { return (List) hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createSQLQuery(hql); if (params != null) for (int i = 0; i < params.length; i++) { query.setParameter(i, params[i]); } query.setFirstResult(start); query.setMaxResults(count); log.info("sqlList"); return query.list(); } }); } @SuppressWarnings({ "rawtypes", "unchecked" }) public List sqlList(final String hql) { return (List) hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createSQLQuery(hql); return query.list(); } }); } public long getCount(final String hqlStr) { @SuppressWarnings("unchecked") Object count = hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { return Long.parseLong(session.createQuery(hqlStr).uniqueResult() + ""); } }); return Long.parseLong(count + ""); } @SuppressWarnings("unchecked") public long getCount(final String hqlStr, final Serializable[] wheres) { Object count = hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { int fromIndex = hqlStr.indexOf("from"); String hql = "select count(*) " + hqlStr.substring(fromIndex); Query query = session.createQuery(hql); for (int i = 0; i < wheres.length; i++) { query.setParameter(i, wheres[i]); } return Long.parseLong(query.uniqueResult() + ""); } }); return Long.parseLong(count + ""); } @SuppressWarnings("unchecked") public long getCountSQL(final String hqlStr) { Object count = hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { return Long.parseLong(session.createSQLQuery(hqlStr).uniqueResult() + ""); } }); return Long.parseLong(count + ""); } @SuppressWarnings("unchecked") public long getCountSQL(final String hqlStr, final Serializable[] wheres) { Object count = hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { int fromIndex = hqlStr.indexOf("from"); String hql = "select count(*) " + hqlStr.substring(fromIndex); Query query = session.createSQLQuery(hql); for (int i = 0; i < wheres.length; i++) { query.setParameter(i, wheres[i]); } return Long.parseLong(query.uniqueResult() + ""); } }); return Long.parseLong(count + ""); } @SuppressWarnings({ "rawtypes", "unchecked" }) public Session getSession() { return (Session) hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) { return session; } }); } @SuppressWarnings({ "unchecked", "rawtypes" }) public Object excute(HibernateCallback callBack) { return hibernateTemplate.execute(callBack); } }