`
cutesunshineriver
  • 浏览: 200202 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SSH2的泛型DAO

阅读更多
1、首先定义泛型DAO的接口。
package com.ys.common.dao;

import java.io.Serializable;
import java.util.List;

public interface IBaseDao<T, ID extends Serializable> {
	
	/**
	 * 保存实体
	 * 
	 * @param entity
	 *            实体类
	 */
	public void save(T entity);

	/**
	 * 删除实体
	 * 
	 * @param entity
	 *            实体类
	 */
	public void delete(T entity);

	/**
	 * 根据实体id 删除实体
	 * 
	 * @param entityClass
	 *            实体类
	 * @param id
	 *            实体id
	 */
	public void deleteById(Class<T> entityClass, ID id);

	/**
	 * 更新实体
	 * 
	 * @param entity
	 *            实体类
	 */
	public void update(T entity);

	/**
	 * 根据实体id 查询单个实体
	 * 
	 * @param entityClass
	 *            实体类
	 * @param id
	 *            实体id
	 * @return
	 */
	public T findById(Class<T> entityClass, ID id);

	/**
	 * 列出所有实体集合
	 * 
	 * @param entityClass
	 *            实体类
	 * @return 实体类List
	 */
	public List<T> findAll(Class<T> entityClass);

	/**
	 * 根据实体参数,查询符合条件的实体类集合
	 * 
	 * @param hql
	 * @param values
	 *            参数
	 * @return
	 */
	public List<Object> find(String hql, Object... values);

}


2、给出基于HibernateDaoSupport类的具体实现。
package com.ys.common.dao;

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;

public class BaseHibernateDao<T, ID extends Serializable> extends
		HibernateDaoSupport implements IBaseDao<T, ID> {

	public void delete(T entity) {
		this.getHibernateTemplate().delete(entity);
	}

	public void deleteById(Class<T> entityClass, ID id) {
		delete(this.findById(entityClass, id));
	}

	@SuppressWarnings("unchecked")
	public T findById(Class<T> entityClass, ID id) {
		return (T) this.getHibernateTemplate().get(entityClass, id);
	}

	@SuppressWarnings("unchecked")
	public List<T> findAll(Class<T> entityClass) {
		String name = entityClass.getName();
		return this.getHibernateTemplate().find("from " + name);
	}

	public void save(T entity) {
		this.getHibernateTemplate().save(entity);
	}

	public void update(T entity) {
		this.getHibernateTemplate().update(entity);
	}

	@SuppressWarnings("unchecked")
	public List<Object> find(String hql, Object... values) {
		return this.getHibernateTemplate().find(hql, values);
	}

}


3、在web.xml里注册Spring的OpenSessionInViewFilter。
	<filter>
		<filter-name>hibernateFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>hibernateFilter</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>


4、继承基础DAO类即可重用DAO类方法。
package com.ys.system.dept.dao;

import com.ys.common.dao.BaseHibernateDao;
import com.ys.system.dept.bean.SysDept;

public class DeptDao extends BaseHibernateDao<SysDept, Integer> {
	
}


具体的调用方式如下:
package com.ys.system.dept.service;

import java.util.List;

import com.ys.system.dept.bean.SysDept;
import com.ys.system.dept.dao.DeptDao;

public class DeptService implements IDeptService {

         //Spring容器依赖注入
	private DeptDao deptDao;

	public DeptDao getDeptDao() {
		return deptDao;
	}

	public void setDeptDao(DeptDao deptDao) {
		this.deptDao = deptDao;
	}

	public void delete(SysDept dept) {
		deptDao.delete(dept);
	}

	public SysDept findById(int deptId) {
		return deptDao.findById(SysDept.class, deptId);
	}

	public void save(SysDept dept) {
		deptDao.save(dept);
	}

	public void update(SysDept dept) {
		deptDao.update(dept);
	}

}


提供出DeptDao的Spring配置文件片段:
        
 <bean id="deptDao" class="com.ys.system.dept.dao.DeptDao" scope="singleton">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	
	<bean id="deptService" class="com.ys.system.dept.service.DeptService">
		<property name="deptDao" ref="deptDao"></property>
	</bean>



分享到:
评论
1 楼 FYXjsj 2013-04-01  
不错,给力!

相关推荐

    ssh通用泛型DAO

    在这个主题中,我们将深入探讨"ssh通用泛型DAO"的相关知识点。 首先,我们来了解"BaseHibernateDAO"。BaseHibernateDAO是基于Hibernate框架的一个基类,它封装了常见的数据库操作,如增删查改(CRUD)。通过继承这...

    SSH 泛型DAO分页

    这个压缩包文件的标题"SSH 泛型DAO分页"表明它提供了一个实现SSH框架整合的示例,特别关注了泛型DAO(Data Access Object)以及分页功能。下面将详细介绍SSH框架及其分页和泛型DAO的概念。 1. **Struts2**: Struts2...

    ssh2 + dao泛型

    这篇博客"ssh2 + dao泛型"结合了这两个概念,探讨了如何在SSH2框架下利用泛型优化DAO层的操作。 SSH2框架主要由Spring、Struts和Hibernate三个部分组成,它为Java Web开发提供了强大的支持。Spring提供依赖注入和...

    经典泛型dao层代码,非常好用简易

    2. **代码复用性**:一个泛型DAO类可以用于处理任何实体类型,大大减少了代码量,提高了代码的可维护性。 3. **灵活性**:能够轻松地扩展功能,如添加新的查询方法,而无需修改大量现有代码。 #### 实现细节 在给...

    ssh整合下的通用泛型DAO+分页

    在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...

    SSH泛型DAO+Proxool+DisPlayTag+Jquery easyui

    标题中的"SSH泛型DAO+Proxool+DisPlayTag+Jquery easyui"涉及到的是一个基于Spring、Struts和Hibernate(SSH)框架的Web应用开发中的几个关键技术和组件。让我们逐一深入探讨这些技术。 1. **Spring**: Spring 是...

    SSH泛型代码实例

    - `DAO(1).rar`可能包含使用泛型的DAO设计模式示例,展示了如何创建泛型DAO以处理不同类型的数据对象。 综上所述,SSH框架结合泛型能够提升Java应用的开发效率和代码质量。通过学习和理解这些示例,开发者可以更好...

    java底层代码:泛型DAO+SSH+Proxool连接池+国际化语言

    3、此底层包含泛型DAO、Proxool连接池、国际化语言、DateUtil工具、ExcelUtil报表工具、自定义封装的弹框、批量删除、分页、上传等。 4、包含常用的工具:jquery、easy-ui、日期控件、highcharts图表控件、图片放大...

    ssh通用基于泛型的dao

    1. `GenericDAO.java`:泛型DAO接口,定义了基本的CRUD方法。 2. `HibernateGenericDAO.java`:实现了`GenericDAO`接口的具体类,使用Hibernate作为底层的数据访问技术。 3. `BaseDAO.java`:可能是一个抽象类,包含...

    SSH2全注解整合(spring2.5+hibernate3.3+struts2.1+泛型DAO+proxool连接池)

    泛型DAO(Data Access Object)是一种设计模式,用于抽象数据访问层的操作,提供通用的CRUD(Create, Read, Update, Delete)方法。通过泛型,DAO可以适用于多种类型的实体,降低了代码重复。例如,一个BaseDAO接口...

    SSH笔记-泛型依赖注入

    本笔记将深入探讨SSH中的Spring框架如何实现泛型依赖注入。 首先,我们来理解泛型的基本概念。泛型是Java SE 5引入的一种强大的类型系统机制,允许在类、接口和方法中使用类型参数,从而增强了代码的类型安全性和...

    基于注解ssh的通用dao的crud

    在具体实现通用DAO时,我们通常会有一个抽象的DAO父类,比如`BaseDao&lt;T&gt;`,其中T代表泛型,表示任何实体类型。然后,针对每种实体类,我们可以创建一个继承自`BaseDao`的子类,如`UserDao extends BaseDao&lt;User&gt;`,...

    SSH2_自动生成数据库框架整合-泛型引用(自写)

    在这个项目"SSH2_自动生成数据库框架整合-泛型引用(自写)"中,开发者尝试通过自定义方式整合这三个框架,同时利用泛型来优化数据库操作。 Struts2是MVC(Model-View-Controller)设计模式的一个实现,主要负责处理...

    ssh2开发整合个人总结

    SSH2 是一个集成框架,由 Struts、Spring 和 Hibernate 三个开源组件组成,常用于构建企业级的Java Web 应用程序。以下是关于 SSH2 开发整合的详细说明: 1. **Struts2**:Struts2 是一个基于 MVC(Model-View-...

    泛型框架整合

    例如,定义一个泛型DAO(Data Access Object)接口,可以针对不同的实体类提供统一的操作,减少代码重复。 在“ssh-template”这个项目中,我们可以假设它提供了一种模板方式来整合SSH框架,并且实现了泛型和反射的...

    ssh数据库基本操作封装

    在SSH框架中,泛型可以被应用到DAO(Data Access Object)层,创建泛型DAO接口和实现,以减少代码重复,提高代码复用性和可维护性。例如,你可以创建一个泛型BaseDAO接口,如下所示: ```java public interface ...

    JSP,SSH框架学习日志3,DAO层.pdf

    在Java Web开发中,SSH(Struts2、Spring、Hibernate)框架被广泛使用,而DAO(Data Access Object)层是SSH架构中的一个重要组成部分,主要负责与数据库进行交互。本篇日志将探讨如何在SSH框架下高效地实现DAO层,...

    ssh项目(自定义struts1)

    在实际开发中,一个SSH项目会包含各种配置文件(如struts-config.xml、hibernate.cfg.xml)、Java源代码(Action类、DAO类、Service类等)、JSP页面以及数据库脚本等。开发者通常会利用IDE(如Eclipse或IntelliJ ...

Global site tag (gtag.js) - Google Analytics