package com.dao;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
/**
* 实现增删改查的超类
* @author Administrator
*
* @param <T>
* @param <I>
*/
@Transactional
public class DaoSupport<T,I extends Serializable> {
@Autowired protected SessionFactory factory;
private Class<T> entityClass;
@SuppressWarnings("unchecked")
public DaoSupport() {
Type genType = getClass().getGenericSuperclass();
if(genType instanceof ParameterizedType){
ParameterizedType pra=(ParameterizedType)genType;
Type[] t=pra.getActualTypeArguments();
if(t.length>0){
entityClass=(Class<T>) t[0];
}else{
entityClass=(Class<T>) Object.class;
}
}else{
entityClass=(Class<T>) Object.class;
}
}
/**
* 保存数据
* @param entity
*/
public void save(T entity) {
factory.getCurrentSession().save(entity);
}
/**
* 更新数据
* @param entity
*/
public void update(T entity){
factory.getCurrentSession().update(entity);
}
/**
* @param entity
*/
public void delete(T entity){
factory.getCurrentSession().delete(entity);
}
@SuppressWarnings("unchecked")
public List<T> listAll(){
return factory.getCurrentSession().createCriteria(entityClass).list();
}
@SuppressWarnings("unchecked")
public T get(I id){
return (T) factory.getCurrentSession().get(entityClass, id);
}
public final SessionFactory getFactory() {
return factory;
}
public final void setFactory(SessionFactory factory) {
this.factory = factory;
}
}
分享到:
相关推荐
简易ftp服务器 简单易用ftp服务器 小型ftp服务器系统
简单易用好上手的音频编辑器,可编辑多种音频格式,支持剪辑,组合,各种特效。
简易服务器,简单易用,简易服务器,简单易用,简易服务器,简单易用,简易服务器,简单易用
TabSheet 简单易用的TabSheet类 简单易用的TabSheet类
简单易用的FTP服务器程序 简单易用的FTP服务器程序
非常强大的一款PLC测试工具、简单易用 非常强大的一款PLC测试工具、简单易用 非常强大的一款PLC测试工具、简单易用 非常强大的一款PLC测试工具、简单易用 非常强大的一款PLC测试工具、简单易用 非常强大的...
简单易用的mysql操作库,使用起来非常简单,目前还不支持二进制数据操作。后续增加
简单易用的FTP服务器,方便简单,FTP基本操作都可以实现,对于IT职员来说是不可多得的工具之一
简单易用录屏软件 ,点开就会
微软拼音输入法2010版,简单易用。 安装方法:将其文件解压出来放到专门的文件夹,点击exe直接安装就可以。微软拼音输入法2010版,简单易用。 安装方法:将其文件解压出来放到专门的文件夹,点击exe直接安装就可以。...
Md5加密类,c++调用,简单易用,亲测可用。项目中也在使用此类。
SSH客户端工具,简单易用,只有1M大小,欢迎大家使用
php超简单易用开发工具,安装即用,不用配置环境
C#小微企业简单易用的物料清单管理软件系统源码。制作本软件目的是为小微企业提供一套简单易用的物料清单管理软件,助力提高小微企业信息化管理水平。C#小微企业简单易用的物料清单管理软件系统源码。制作本软件目的...
JavaWeb图书管理系统,简单易用功能强大,可拓展性高,集成主流框架 JavaWeb图书管理系统,简单易用功能强大,可拓展性高,集成主流框架 JavaWeb图书管理系统,简单易用功能强大,可拓展性高,集成主流框架 JavaWeb...
简单易用的企业网站源码,功能强大,后台完整。
一个绝对简单易用的日期控件,纯javascript实现.rar
phpshow,一个简单易用的轻量级 php 框架。快速简单高效是我们的使命,为了快速解决工作中遇到的难题。
spidy - 简单易用的命令行Web爬虫
VC编写的card类ActiveX控件,简单易用使用方便。.zip