范类定义超类,简单易用

本文详细介绍了Java ORM框架的使用方法,并着重探讨了如何将Hibernate与Spring框架结合使用,实现高效的数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值