SSH中通用Dao的兑现
SSH中通用Dao的实现
package auh.dao; 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; /** * GeneralDaoImpl * @author 可可 * @param table 保存数据表名,进行操作前必须设置此属性 * @param Package 存放数据表的pojo的包,默认为"auh.model" */ public class GeneralDaoImpl extends HibernateDaoSupport implements GeneralDao { private String table; private String Package; public GeneralDaoImpl(){ this.Package="auh.model"; } public String getTable() { return table; } public String getPackage() { return Package; } public void setPackage(String package1) { this.Package = package1; } public void setTable(String table) { this.table = table; } public Boolean isNullTable(){ if(table==null)return true; else return false; } public List<Object> FindAllDesc() { return (List<Object>)getHibernateTemplate().find("from "+table+" a order by a.id desc"); } public List<Object> FindAll() { return (List<Object>)getHibernateTemplate().find("from "+table); } public Object FindById(int id) { String sql="from "+table+" where id=?"; List<Object> list=getHibernateTemplate().find(sql,id); if(list!=null)return list.get(0); else return null; } /** * 根据条件查找 * @param query 查询的逻辑表达式,例如:name=? * @param value 将替换query中的'?' * @return List */ public List<Object> FindWhere(String query, Object value) { if(query==null||value==null)query="from "+table; else query="from "+table+" where "+query; return (List<Object>)getHibernateTemplate().find(query,value); } /** * 根据条件查找 * @param query 查询的逻辑表达式,例如:name=? and pass=? * @param values 将依次替换query中的所有'?' * @return List */ public List<Object> FindWhere(String query, Object[] values) { if(query==null||values==null)query="from "+table; else query="from "+table+" where "+query; return (List<Object>)getHibernateTemplate().find(query,values); } public String Save(Object ob) { getHibernateTemplate().save(ob); return "success"; } public String DeleteById(int id) { Object u=getHibernateTemplate().load(Package+"."+table, new Integer(id)); getHibernateTemplate().delete(u); return "success"; } public String Delete(Object ob) { // TODO Auto-generated method stub getHibernateTemplate().delete(ob); return "success"; } public String Update(Object ob) { getHibernateTemplate().update(Package+"."+table,ob); return "success"; } public String SaveOrUpdate(Object ob) { getHibernateTemplate().saveOrUpdate(ob); return "success"; } public int FindMaxId() { List<Integer> list=getHibernateTemplate().find("select max(id) from "+table); if(list!=null && list.size()>=1 && list.get(0)!=null) return list.get(0); return 0; } /** * 根据条件统计同记录数 * @param query 查询的逻辑表达式,例如:name=? * @param value 将替换query中的'?' * @return int 总的记录数 */ public int SumWhere(String query, Object value) { // SUM(id) AS Expr1 if(query==null||value==null)query="select count(id) from "+table; else query="select count(id) from "+table+" where "+query; List<Long> list=getHibernateTemplate().find(query,value); if(list!=null && list.size()>=1 && list.get(0)!=null) return list.get(0).intValue(); return 0; } /** * 根据条件分页查找 * @param hql 查询的条件,例如:from message where type =‘admin’ * @param currentPage 要查询的页数 * @param pageSize 每页大小 * @return List */ public List<Object> queryForPage(final String hql,final int currentPage,final int pageSize) { // TODO Auto-generated method stub List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); query.setFirstResult((currentPage-1)*pageSize); query.setMaxResults(pageSize); List list = query.list(); if(list.size()<1) return null; return list; } }); return list; } /** * 根据条件统计同记录数 * @param query 查询的逻辑表达式,例如:from message uid=2 * @return int */ public int getAllRowCount(String hql) { if(hql==null)return 0; hql="select count(id) "+hql; List<Long> list=getHibernateTemplate().find(hql); if(list!=null && list.size()>=1 && list.get(0)!=null) return list.get(0).intValue(); return 0; } /** * 根据条件查找最上面的记录 * @param hql 查询的条件,例如 "from Lanmu where type=rule" * @param sum 要查询的个数 * @return List */ public List<Object> Top(final int sum,final String hql) { // TODO Auto-generated method stub List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); query.setFirstResult(0); query.setMaxResults(sum); List list = query.list(); if(list.size()<1)return null; return list; } }); return list; } }