package pack.java.ssh.basedao;
import java.io.Serializable;
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;
/***
* BaseDao 继承至HibernateDaoSuport类;
* @author Administrator
*
*/
public class BaseDao extends HibernateDaoSupport {
/***
* 添加方法;
* @param obj
*/
public void add(Object obj){
super.getHibernateTemplate().save(obj);
}
/***
* 修改方法;
* @param obj
*/
public void update(Object obj){
super.getHibernateTemplate().update(obj);
}
/***
* 根据对象删除;
* @param obj
*/
public void deleteByObj(Object obj){
super.getHibernateTemplate().update(obj);
}
/***
* 根据主键删除;
* @param c
* @param id
*/
public void deleteById(Class c,Serializable id){
this.deleteByObj(this.queryById(c, id));
}
/***
* 查询全部;
* @param c
* @return
*/
public List queryAll(Class c){
return super.getHibernateTemplate().find("from "+c.getName());
}
/***
* 按主键查询;
* @param c
* @return
*/
public Object queryById(Class c,Serializable id){
return super.getHibernateTemplate().load(c, id);
}
/***
* 按条件删除或者修改;
* @return
*/
public boolean updateOrDelete(String hql,Object...objects){
int result=super.getHibernateTemplate().bulkUpdate(hql, objects);
return result>0;
}
/***
* 保存或者更新;
* @param obj
*/
public void saveOrUpdate(Object obj){
super.getHibernateTemplate().saveOrUpdate(obj);
}
/***
* 分页查询;
* @return
*/
public List queryPage(final String hql,final Integer page,final Integer size,final Object...objects){
return super.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
Query query=session.createQuery(hql);
if(objects!=null){
for (int i=0;i<objects.length;i++) {
query.setParameter(i,objects[i]);
}
}
if(page!=null && size!=null){
query.setFirstResult((page-1)*size).setMaxResults(size);
}
return query.list();
}});
}
}