首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

BaseDao的打包

2012-10-25 
BaseDao的封装BaseDao 常用的方法,封装如下:package pack.hibernate.basedaoimport java.io.Serializable

BaseDao的封装

BaseDao 常用的方法,封装如下:

package pack.hibernate.basedao;import java.io.Serializable;import java.util.List;import org.hibernate.Hibernate;import org.hibernate.Query;import org.hibernate.Session;import pack.hibernate.sessionfactory.HibernateSessionFactory;/** * 基類; * @author zhouhaitao */public class BaseDao { /**  * 添加对象的方法;  * @param obj  */ public void add(Object obj){  HibernateSessionFactory.getSession().save(obj); }  /**  * 按主键查找;  *  */ public Object selectById(Class c,Serializable s){  Object obj=HibernateSessionFactory.getSession().load(c,s);  return obj; }  /**  * 根据对象修改;  *  */ public void updateObj(Object obj){  HibernateSessionFactory.getSession().update(obj); }  /**  * 根据对象删除;  * @param obj  */ public void delete(Object obj){  HibernateSessionFactory.getSession().delete(obj); }  /**  * 根据主键删除;  * @param c  * @param s  */ public void delete(Class c,Serializable s){  delete(selectById(c, s)); }  /**  * 查找全部;  * @return  */ public List selectAll(Class c){  Session session=HibernateSessionFactory.getSession();  List list=session.createQuery("From "+c.getName()).list();  return list; } /**  * 分页查找;  * @param hql  * @param page  * @param size  * @param objects  * @return  */ public List pageQuery(String hql,Integer page,Integer size,Object...objects){  Session session=HibernateSessionFactory.getSession();  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);  }  List list=query.list();  return list; }   /**  * 按条件删除,修改;  * @return  */ public boolean executeUpdate(String hql,Object...objects){  Session session=HibernateSessionFactory.getSession();  Query query=session.createQuery(hql);  if(objects!=null){   for(int i=0;i<objects.length;i++){    query.setParameter(i, objects[i]);   }  }    int rows=query.executeUpdate();  return rows>0; }} 

?

UserDao接口代码:

package pack.hibernate.idao;import java.util.List;import pack.hibernate.pojo.Users;/** * UsersDao接口; * @author zhouhaitao * */public interface IUsersDao {/** * 对象的添加; * @param obj */public abstract void add(Users obj);/** * 根据主键查找; * @param id * @return */public abstract Object selectById(Long id);/** * 查询所有; * @return */public abstract List selectAll();/** * 根据主键删除; * @param id */public abstract void delete(Long id);/** * 根据对象删除; * @param user */public abstract void delete(Users user);/** * 根据对象更新; * @param user */public abstract void update(Users user);/** * 分页查询; * @param hql * @param page * @param size * @param objects * @return */public abstract List pageQuery(String hql, Integer page, Integer size,Object... objects);/** * 删除,修改; * @param hql * @param objects * @return */public abstract boolean executeUpdate(String hql, Object... objects);}

?

?

?

UserDaoImpl实现UserDao接口,并且继承BaseDao,封装代码如下:

package pack.hibernate.daoimpl;import java.util.List;import pack.hibernate.basedao.BaseDao;import pack.hibernate.idao.IUsersDao;import pack.hibernate.pojo.Users;/** * UserDaoImpl的实现类; * @author zhouhaitao */public class UserDaoImpl extends BaseDao implements IUsersDao{/** * 添加对象; */public void add(Users obj){super.add(obj);}/** * 根据主键查找; */public Object selectById(Long id){Object obj=super.selectById(Users.class, id);return obj;}/** * 查询所有; */public List selectAll(){List list=super.selectAll(Users.class);return list;}/** * 根据主键删除; */public void delete(Long id){super.delete(Users.class, id);}/** * 删除对象; */public void delete(Users user){super.delete(user);}/** * 更新对象; */public void update(Users user){super.updateObj(user);}/** * 分页查询; */public List pageQuery(String hql,Integer page,Integer size,Object...objects){List list=super.pageQuery(hql, page, size, objects);return list;}/** *修改,删除操作; */public boolean executeUpdate(String hql,Object...objects){return super.executeUpdate(hql, objects);}}

?

一个简单的DAO就封装好了, 这个没有加入事务处理..则需要另外在创建一个代理类,去负责专门的事务处理工作。

?

热点排行