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>
分享到:
相关推荐
ssh通用泛型DAO 共包含3个类:BaseHibernateDAO,Page,QueryParameter
再次打造SSH1整合下的通用泛型DAO+分页,基于HibernateTemplate,欢迎大家指正 - DAO - Java - JavaEye论坛_files
NULL 博文链接:https://caizhenyao.iteye.com/blog/1545304
使用了泛型的dao,在ssh里的应用,非常的简便好用
Struts2.1.6+Spring2.5.6+Hibernate3.3.2+mysql整合+分页模板 能用
3、此底层包含泛型DAO、Proxool连接池、国际化语言、DateUtil工具、ExcelUtil报表工具、自定义封装的弹框、批量删除、分页、上传等。 4、包含常用的工具:jquery、easy-ui、日期控件、highcharts图表控件、图片放大...
NULL 博文链接:https://cl315917525.iteye.com/blog/809862
一个通用的基于泛型的dao层,可以减少程序的工作量,方法齐全
利用ssh(Spring2.5+Struts2.1+Hibernate3.3)全注解整合这3个流行的框架,实现了增、删、改、查的功能,目前功能还比较简单,以后功能再慢慢增加。欢迎大家下载并交流。
spring4+hibernate4+springmvc4+ztree+maven nexus管理支持ztree,以及分页,泛型Dao
# 电影后台管理系统 ...- [x] baseDao定义泛型抽象出基本dao操作 ## 导入项目 ### 导入SQL文件 进入到db文件夹,将ssh.sql文件导入到数据库中 ### 修改数据库密码 修改hibernate.cfg.xml文件 ```xml ...
SSH+compass整合的小例子,导入即可运行,数据库用的是mysql,用的都是注解技术,代码良好,dao层用了江南白衣的思想,根据泛型和反射封装,可以做基类,里面有注册和查询的小例子,基本可以在此基础上继续开放你所...
sshdemo 采用注解大大减少配置 dao 和service 都用泛型抽象出来 极大减少开发工作和出错概率 : 参考: 基于SSH全注解框架实现
否则只能查看 11) Dao 操作优化 BaseDao.java 所有dao的通用方法,dao都必须继承此类 (反射泛型)实现步骤代码:1) 设计数据库:
2、定义IUserDao接口,使其继承IBaseDao并传入泛型。若提供的方法不满足需求, 可以在此接口中定义自己的业务方法,然后在IUserDao的实现类中 通过getCurrentSession方法获取session操作对象。 示例: public ...
(2)dao 使用了公共的GenricDao接口及实现类GenricHibernateDao 并使用了泛型 com.chen.common 包中的CopyOfGenericHibernateDao.java HibernateUtil.java两个是在集成Spring前使用的 可以当做参考吧; (3) ...
{4.6}泛型}{84}{section.4.6} {4.7}集合的迭代(Iterator)}{85}{section.4.7} {4.8}Collections集合工具类}{86}{section.4.8} {4.9}Comparable与Comparator}{86}{section.4.9} {4.9.1}Comparable}{86}{...