package com.yeshi.buwan.dao.base;
|
|
import jxl.common.Logger;
|
import org.hibernate.HibernateException;
|
import org.hibernate.Query;
|
import org.hibernate.Session;
|
import org.hibernate.transform.Transformers;
|
import org.springframework.orm.hibernate4.HibernateCallback;
|
import org.springframework.orm.hibernate4.HibernateTemplate;
|
import org.springframework.stereotype.Repository;
|
|
import javax.annotation.Resource;
|
import javax.transaction.Transactional;
|
import java.io.Serializable;
|
import java.util.List;
|
|
@Repository
|
public class BaseDao<T> {
|
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<? extends T> clazz, Serializable id) {
|
return (T) hibernateTemplate.get(clazz, id);
|
}
|
|
|
public List<T> list(String hql, Serializable... params) {
|
return (List<T>) hibernateTemplate.find(hql, params);
|
}
|
|
public T findOne(String hql, Serializable... params) {
|
List<T> list = (List<T>) hibernateTemplate.find(hql, params);
|
if (list != null && list.size() > 0)
|
return list.get(0);
|
return null;
|
}
|
|
@SuppressWarnings({"unchecked", "rawtypes"})
|
public List<T> list(String hql, final int start, final int count, final Serializable[] params) {
|
final String tempsql = hql;
|
return (List<T>) 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<T> list(String hql) {
|
return (List<T>) hibernateTemplate.find(hql);
|
}
|
|
// SQL
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
public List sqlList(final String sql, final Serializable... params) {
|
return (List) hibernateTemplate.execute(new HibernateCallback() {
|
public Object doInHibernate(Session session) throws HibernateException {
|
Query query = session.createSQLQuery(sql);
|
if (params != null)
|
for (int i = 0; i < params.length; i++) {
|
query.setParameter(i, params[i]);
|
}
|
log.info("sqlList");
|
return query.list();
|
}
|
});
|
}
|
|
|
public List sqlListWithEntity(final String sql, Class<T> clazz, final Serializable... params) {
|
return (List) hibernateTemplate.execute(new HibernateCallback() {
|
public Object doInHibernate(Session session) throws HibernateException {
|
Query query = session.createSQLQuery(sql);
|
if (params != null)
|
for (int i = 0; i < params.length; i++) {
|
query.setParameter(i, params[i]);
|
}
|
query.setResultTransformer(Transformers.aliasToBean(clazz));
|
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);
|
}
|
|
}
|