`
xjk2131650
  • 浏览: 55716 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

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;
}




}
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics