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就封装好了, 这个没有加入事务处理..则需要另外在创建一个代理类,去负责专门的事务处理工作。
?