IGenericDao.java
package com.amg.dao.base;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import com.amg.vo.PageBean;
public interface IGenericDao<T extends Serializable, ID extends Serializable> {
public abstract int findByCount(String strHQL);
public abstract ID create(T entity);
public abstract T findById(ID id);
public abstract void delete(ID id);
public abstract void update(T entity);
public abstract List<T> findAll();
public abstract List<Map> findByHQL(final String strHQL, final Object[] params);
public abstract List<T> findBySQL(final String strSQL, final Object[] params);
public abstract List<T> findByHQL_Old(final String strHQL, final Object[] params);
public abstract PageBean findByPage(final int currentPage, final int pageSize, final String strHQL, final Object[] params);
public abstract void bulkUpdate(final String strHQL, final Object[] params);
public abstract boolean executeUpdateBySession(String strSQL);
}
AGenericHibernateDao.java
package com.amg.dao.base;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.sql.SQLException;
import java.util.List;
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 com.amg.vo.PageBean;
public class AGenericHibernateDao<T extends Serializable, ID extends Serializable>
extends HibernateDaoSupport implements IGenericDao<T, ID> {
private Class<T> persistentClass;
@SuppressWarnings("unchecked")
public AGenericHibernateDao() {
this.persistentClass = (Class<T>) ((ParameterizedType) this.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
@SuppressWarnings("unchecked")
public ID create(T entity) {
return (ID) this.getHibernateTemplate().save(entity);
}
public T findById(ID id) {
return this.getHibernateTemplate().get(persistentClass, id);
}
public void delete(ID id) {
this.getHibernateTemplate().delete(findById(id));
}
public void update(T entity) {
this.getHibernateTemplate().update(entity);
}
public List<T> findAll() {
return this.getHibernateTemplate().loadAll(persistentClass);
}
public void bulkUpdate(String strHQL, Object[] params) {
if (params == null)
this.getHibernateTemplate().bulkUpdate(strHQL);
this.getHibernateTemplate().bulkUpdate(strHQL, params);
}
public PageBean findByPage(final int currentPage, final int pageSize,
final String strHQL, final Object[] params) {
return this.getHibernateTemplate().execute(
new HibernateCallback<PageBean>() {
public PageBean doInHibernate(Session arg0)
throws HibernateException, SQLException {
PageBean bean = new PageBean();
Query qu = arg0.createQuery(strHQL);
for (int i = 0; i < params.length; i++) {
qu.setParameter(i, params[i]);
}
qu.setFirstResult((currentPage - 1) * pageSize);
qu.setMaxResults(pageSize);
bean.setData(qu.list());
qu = arg0.createQuery("select count(*) "
+ strHQL.substring(strHQL.toLowerCase()
.indexOf("from")));
for (int j = 0; j < params.length; j++) {
qu.setParameter(j, params[j]);
}
bean.setTotalRows(Integer.parseInt(qu.uniqueResult()
.toString()));
bean.setCurrentPage(currentPage);
bean.setPageSize(pageSize);
return bean;
}
});
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public List<java.util.Map> findByHQL(final String strHQL, final Object[] params) {
return super.getHibernateTemplate().execute(
new HibernateCallback<List<java.util.Map>>() {
public List<java.util.Map> doInHibernate(Session arg0)
throws HibernateException, SQLException {
Query query = arg0.createQuery(strHQL);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.list();
}
});
}
public boolean executeUpdateBySession(String strSQL) {
Query query = this.getSession().createSQLQuery(strSQL);
return query.executeUpdate() > 0;
}
public int findByCount(final String strHQL) {
return super.getHibernateTemplate().execute(
new HibernateCallback<Integer>() {
public Integer doInHibernate(Session arg0)
throws HibernateException, SQLException {
Query query = arg0.createQuery(strHQL);
int count = (((Number) query.uniqueResult()).intValue());
return count;
}
});
}
public List<T> findByHQL_Old(final String strHQL, final Object[] params) {
return super.getHibernateTemplate().execute(
new HibernateCallback<List<T>>() {
@SuppressWarnings("unchecked")
public List<T> doInHibernate(Session arg0)
throws HibernateException, SQLException {
Query query = arg0.createQuery(strHQL);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.list();
}
});
}
@SuppressWarnings("unchecked")
public List<T> findBySQL(final String strSQL, final Object[] params) {
return super.getHibernateTemplate().execute(
new HibernateCallback<List<T>>() {
public List<T> doInHibernate(Session arg0)
throws HibernateException, SQLException {
Query query = arg0.createQuery(strSQL);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.list();
}
});
}
}
IRecordDao.java
package com.amg.dao;
import java.util.List;
import com.amg.dao.base.IGenericDao;
import com.amg.po.Record;
public interface IRecordDao extends IGenericDao<Record, Integer> {
public List<?> findBySql_totalTypeCount(String sql,Class clas);
public List<?> findBySql_totalStrutedCount(String sql,Class clas);
//public List<?> findBySql_totalCountDetail(String sql,Class clas);
public List<?> find2VoBySql(String sql,Class cls);
public List<?> findBySql_totalTCountDetail(String sql, Class clas);
public List<?> findBySql_totalSCountDetail(String sql, Class clas);
public List<?> findBySql_totalTypeCountByDay(String sql, Class clas);
}
RecordDaoImpl.java
package com.amg.dao.impl;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.transform.Transformers;
import org.springframework.orm.hibernate3.HibernateCallback;
import com.amg.dao.IRecordDao;
import com.amg.dao.base.AGenericHibernateDao;
import com.amg.po.Record;
public class RecordDaoImpl extends AGenericHibernateDao<Record, Integer>
implements IRecordDao {
public List<?> findBySql_totalTypeCount(final String sql, final Class clas) {
return super.getHibernateTemplate().execute(
new HibernateCallback<List<?>>() {
public List<?> doInHibernate(Session session)
throws HibernateException, SQLException {
return session
.createSQLQuery(sql)
//.addScalar("createTime", Hibernate.STRING)
.addScalar("typeCount", Hibernate.INTEGER)
//.addScalar("structedCount", Hibernate.INTEGER)
.setResultTransformer(
Transformers.aliasToBean(clas)).list();
}
});
}
public List<?> find2VoBySql(String sql, Class cls) {
// TODO Auto-generated method stub
return null;
}
public List<?> findBySql_totalStrutedCount(final String sql, final Class clas) {
return super.getHibernateTemplate().execute(
new HibernateCallback<List<?>>() {
public List<?> doInHibernate(Session session)
throws HibernateException, SQLException {
return session
.createSQLQuery(sql)
//.addScalar("createTime", Hibernate.STRING)
//.addScalar("typeCount", Hibernate.INTEGER)
.addScalar("structedCount", Hibernate.INTEGER)
.setResultTransformer(
Transformers.aliasToBean(clas)).list();
}
});
}
public List<?> findBySql_totalTCountDetail(final String sql, final Class clas) {
return super.getHibernateTemplate().execute(
new HibernateCallback<List<?>>() {
public List<?> doInHibernate(Session session)
throws HibernateException, SQLException {
return session
.createSQLQuery(sql)
.addScalar("createTime", Hibernate.STRING)
.addScalar("baseUrlCount", Hibernate.INTEGER)
//.addScalar("structedUrlCount", Hibernate.INTEGER)
.setResultTransformer(
Transformers.aliasToBean(clas)).list();
}
});
}
public List<?> findBySql_totalSCountDetail(final String sql, final Class clas) {
return super.getHibernateTemplate().execute(
new HibernateCallback<List<?>>() {
public List<?> doInHibernate(Session session)
throws HibernateException, SQLException {
return session
.createSQLQuery(sql)
.addScalar("createTime", Hibernate.STRING)
//.addScalar("baseUrlCount", Hibernate.INTEGER)
.addScalar("structedUrlCount",
Hibernate.INTEGER)
.setResultTransformer(
Transformers.aliasToBean(clas)).list();
}
});
}
public List<?> findBySql_totalTypeCountByDay(final String sql, final Class clas) {
// TODO Auto-generated method stub
return super.getHibernateTemplate().execute(
new HibernateCallback<List<?>>() {
public List<?> doInHibernate(Session session)
throws HibernateException, SQLException {
return session
.createSQLQuery(sql)
.addScalar("createTime", Hibernate.STRING)
.addScalar("typeCount", Hibernate.INTEGER)
//.addScalar("structedCount", Hibernate.INTEGER)
.setResultTransformer(
Transformers.aliasToBean(clas)).list();
}
});
}
}
IRecordBiz.java
package com.amg.biz;
import java.util.List;
import com.amg.po.Record;
import com.amg.vo.PageBean;
public interface IRecordBiz {
public abstract int findByCount(String strHQL);
public abstract PageBean findByPage(final int currentPage, final int pageSize, final String strHQL, final Object[] params);
public abstract void addRecord(final Record record);
public abstract void deleteRecord(final int id);
public abstract Record findById(final int id);
public abstract void updateRecord(final Record record);
public abstract List<Record> findAll();
public abstract List<java.util.Map> findByHQL(final String strHQL, final Object[] params);
public abstract List<Record> findBySQL(final String strHQL, final Object[] params);
public abstract List<Record> findByHQL_Old(final String strHQL, final Object[] params);
public List<?> findBySql_totalTypeCount(String sql,Class clas);
public List<?> findBySql_totalStrutedCount(String sql,Class clas);
public List<?> findBySql_totalTCountDetail(String sql,Class clas);
public List<?> findBySql_totalSCountDetail(String sql,Class clas);
public List<?> find2VoBySql(String sql,Class clas);
public List<?> findBySql_totalTypeCountByDay(String sql, Class clas);
}
RecordBizImpl.java
package com.amg.biz.impl;
import java.util.List;
import com.amg.biz.IRecordBiz;
import com.amg.dao.IRecordDao;
import com.amg.po.Record;
import com.amg.vo.PageBean;
public class RecordBizImpl implements IRecordBiz {
private IRecordDao recordDao;
public void setRecordDao(IRecordDao RecordDao) {
this.recordDao = RecordDao;
}
public PageBean findByPage(final int currentPage, final int pageSize,
final String strHQL, final Object[] params) {
// String strHQL = "select d from Record as d order by d.Recordno";
// Object[] params = new Object[]{};
return this.recordDao.findByPage(currentPage, pageSize, strHQL, params);
}
public void addRecord(Record Record) {
this.recordDao.create(Record);
}
public void deleteRecord(int Recordno) {
this.recordDao.delete(Recordno);
}
public void updateRecord(Record Record) {
this.recordDao.update(Record);
}
public Record findById(int Recordno) {
return this.recordDao.findById(Recordno);
}
public List<Record> findAll() {
return this.recordDao.findAll();
}
public List<java.util.Map> findByHQL(String strHQL, Object[] params) {
return this.recordDao.findByHQL(strHQL, params);
}
public int findByCount(String strHQL) {
return this.recordDao.findByCount(strHQL);
}
public List<Record> findByHQL_Old(String strHQL, Object[] params) {
return this.recordDao.findByHQL_Old(strHQL, params);
}
public List<Record> findBySQL(String strSQL, Object[] params) {
return this.recordDao.findBySQL(strSQL, params);
}
public List<?> findBySql_totalTypeCount(String sql, Class clas) {
return this.recordDao.findBySql_totalTypeCount(sql, clas);
}
public List<?> find2VoBySql(String sql, Class clas) {
return this.recordDao.find2VoBySql(sql, clas);
}
public List<?> findBySql_totalStrutedCount(String sql, Class clas) {
return this.recordDao.findBySql_totalStrutedCount(sql, clas);
}
public List<?> findBySql_totalTCountDetail(String sql, Class clas) {
// TODO Auto-generated method stub
return this.recordDao.findBySql_totalTCountDetail(sql, clas);
}
public List<?> findBySql_totalSCountDetail(String sql, Class clas) {
return this.recordDao.findBySql_totalSCountDetail(sql, clas);
}
public List<?> findBySql_totalTypeCountByDay(String sql, Class clas) {
// TODO Auto-generated method stub
return this.recordDao.findBySql_totalTypeCountByDay(sql, clas);
}
}