`

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

 

分享到:
评论
3 楼 xx599306170 2015-07-30  
 
2 楼 i5suoi 2013-04-22  
有没有个更新的版本,更稳定点的
1 楼 xj1990129 2012-12-24  
我们在service层为了解耦 写的是userdao接口类型,虽然spring实际注入的是userdaoImpl,但是在程序没运行之前是不知道,那么在service的接口类型的userdao的 引用 怎么能用到basedao中的方法啊?

相关推荐

    baseDao封装基本的增删查改方法

    使用baseDao封装基本的增删改查的方法,包括分页查询等功能

    spring4+hibernate4 封装BaseDao增删改查以及分页,,支持jdk1.7,不支持jdk1.8

    3. **BaseDao封装**:BaseDao是一般用于数据访问层的基类,它包含了通用的CRUD操作。在这个项目中,BaseDao可能已经定义了如`save()`, `update()`, `delete()`, `findById()`, `findAll()`等方法,以供其他特定的DAO...

    Mybatis通用DAO设计封装(mybatis)

    Mybatis通用DAO设计封装主要涉及的是在Java开发中如何高效地使用Mybatis框架进行数据库操作。Mybatis是一款轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过提供自定义SQL、存储...

    springMVC+Mybatis封装整合

    springMVC+Mybatis封装整合:整合搭建已经完成不再述,本框架特色主要针对Mybatis框架BaseDao,BaseService,BaseServiceImpl封装,有点贵,本人也是循序见进到这一步,花了将近一个月时间,之前发布版本可以不下载...

    基于JDBC封装的BaseDao(实例代码)

    本篇文章将介绍一个基于JDBC封装的`BaseDao`实例,该实例提供了一个通用的DAO(Data Access Object)模板,可以应用于多种实体类的操作。 首先,`BaseDao`泛型类被定义为`&lt;T&gt;`,表示它可以处理任何类型的对象。类中...

    dbutils封装ORM 实现BaseDAO

    `BaseDAO` 的封装则是一种常见的设计模式,用于简化数据访问对象(DAO)的实现,使得业务代码更加简洁、可维护。 `dbutils` 主要包含以下几个核心概念和功能: 1. **QueryRunner**: QueryRunner类是dbutils的主要...

    基于hibernate封装的BaseDao

    基于hibernate封装的BaseDao,有完整的增删改查,分页,执行hql sql 方法 约 20个方法,详情地址 https://blog.csdn.net/qq_41861261/article/details/85595872

    basedao_basedao数据库_

    BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式可以提高代码复用性,降低业务逻辑与数据访问层的耦合度。 首先,我们来...

    基于注解反射封装的BaseDao(支持一对多查询)

    本篇将深入探讨如何利用注解和反射机制来封装一个支持一对多查询的 `BaseDao`。 首先,我们需要了解注解(Annotation)。注解是Java提供的一种元数据,它为编译器和工具提供了信息,可以用于代码验证、代码生成、...

    basedao的封装

    //获得当前类型的带有泛型类型的父类 ParameterizedType ptClass = (ParameterizedType) this.getClass().getGenericSuperclass(); //获得运行期的泛型类型 clazz = (Class) ptClass.getActualTypeArguments()[0]...

    Crm客户关系管理系统

    ● 采用Mybatis和二次BaseDao封装完成持久层基本crud操作,提高系统开发效率; ● 通过AOP、自定义注解和Freemark的FTL语言实现前后权限的拦截; ● 使用拦截器过滤未登录用户请求 ; ● 借助Quartz 时钟调度框架...

    常用的BaseDAO及其实现

    BaseDAO是Java中一种常用的数据访问对象(DAO),它提供了统一的数据访问接口,封装了数据访问的基本操作。BaseDAO通常是通过继承HibernateDaoSupport类实现的。 BaseDAO的主要功能包括: 1. 加载指定ID的持久化...

    基于hibernate的baseDao

    BaseDAO是一种通用的设计模式,它封装了Hibernate框架的基本操作,使得业务逻辑层可以更加专注于业务处理,而不需要关心底层的数据访问细节。本压缩包提供的"baseDAO"文件,包含了一个详细注释的BaseDAO实现,旨在...

    hibernate>>BaseDAO

    `BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象(Data Access Object)的基础类,用于封装对数据库的通用操作。现在我们来深入探讨`hibernate`中的`BaseDAO`及其相关知识点。 首先,DAO设计模式是...

    精简封装Basedao.pdf

    总之,`BaseDao`接口及其实现是Java中数据访问层设计的一个常见模式,用于封装数据库操作,提供通用的方法供业务逻辑调用。这样的设计有助于减少代码重复,提高代码质量,同时也便于更换不同的数据库引擎。

    BaseDao.java

    简单的JDBC封装类

    企业通用BaseDao方法集

    除了基础的CRUD方法,BaseDao还可能封装了分页查询功能,这是因为分页在企业应用中非常常见。例如,可以提供以下方法: 1. `Page&lt;T&gt; queryByPage(int pageNum, int pageSize, Map, Object&gt; params)`: 这个方法用于...

    Android数据库ORM封装

    本文将详细介绍如何在Android中进行数据库ORM的封装,并通过一个名为`DataBaseDemo`的示例项目来展示具体实现。 ### 1. Android的SQLite数据库 SQLite是Android系统内置的关系型数据库,支持标准SQL语法,适用于轻...

    mybatis basedao

    MyBatis BaseDAO 是一种基于 MyBatis 框架的工具类库,它旨在简化数据库操作,通过封装常见的CRUD(Create、Read、Update、Delete)方法,为开发者提供便利,减少重复代码,提高开发效率。在Java Web 开发中,...

Global site tag (gtag.js) - Google Analytics