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

范类定义超类,简单易用

 
阅读更多

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

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    介绍一个简单的JavaScript类框架

    本文介绍了一个简单的JavaScript类框架,它通过提供一种基础的类定义和继承机制,使得初学者可以更加容易地理解和掌握JavaScript中类的创建和继承。 为了帮助初学者理解JavaScript中类的创建与继承,这个简单的类...

    The Swift Programming Language

    - 向下转型(简称下转):将超类转换为子类的操作。 - AnyObject和Any的转换:介绍这两种类型之间的转换方法。 21. 类型嵌套 - 类型嵌套实例:在类型内部定义另一个类型。 - 类型嵌套的引用:如何引用嵌套类型...

    Java笔试题:Java基础概念(附答案)

    9. 继承与方法调用:Java中的实例方法可以通过`super`关键字调用超类的实例方法,也可以直接调用超类的类方法(静态方法),但不能直接调用其他类的实例方法。 10. Java程序种类:Java程序可以是类、Applet(小程序...

    swift中文完整版

    - **扩展**: 扩展可以在不修改原定义的情况下添加新的功能到现有的类、结构体或枚举中。 **7. 泛型** - **泛型**: 泛型允许编写可以操作任意类型而不牺牲性能或类型安全性的代码。 #### 三、高级特性 **1. 字符串...

    java2实用教程

    - **简单易学**:Java 设计时考虑了易用性和易学性,语法简洁明了。 - **面向对象**:Java 是一门完全支持面向对象编程(OOP)的语言。 - **安全性**:Java 提供了严格的类型检查机制和安全模型,可以避免很多...

    java基本概念--java程序开发的基本概念

    4. **继承**:一个类可以从另一个类派生,获取父类的属性和方法,Object类是所有Java类的根超类。 5. **对象的特性**:行为(能做什么)、状态(对象对方法的响应)和身份(区分不同对象)。 6. **类之间的关系**...

    java经典题目 共22页

    - **简单易用**:Java的设计初衷是为了简化C和C++的复杂性,提供了自动内存管理和垃圾回收机制,使开发者能够更加专注于业务逻辑的实现。 - **功能完善**:Java拥有庞大的标准库,包括网络编程、图形用户界面(GUI)...

    面向对象数据库.ppt

    封装是将对象的状态和行为结合在一起,而类则是具有相同特征对象的集合,可以形成类层次结构,其中子类继承超类的属性和方法,体现了“is A”的语义。 在面向对象数据库中,继承机制允许子类从超类继承属性和方法,...

    Apache OpenJPA User's Guide

    - **Embeddable**:定义了可嵌入到其他实体中的类。 - **实体监听器**:用于指定一个类作为实体的监听器。 - **示例**:给出一个具体的类元数据配置示例。 - **字段和属性元数据**: - **瞬态**:标记不持久化的...

    python-read-and-writepython见闻志

    Flask适合用于创建小型的Web应用,它的设计哲学是简单易用。阅读Flask的源码可以帮助开发者深入理解Web框架的工作原理以及如何处理Web请求。 Python中可迭代对象(iterable)的概念允许开发者创建可以被迭代的对象...

    数据建模 模式的持久化

    数据建模和模式的持久化是IT领域中关于对象存储和检索的...通过创建如PersistentObject这样的抽象超类,使用模板方法模式和数据库代理模式,开发者可以构建出既能适应多种存储机构,又能保持代码清晰和模块化的系统。

    robotium从不会到精通

    2. 定义测试入口:通过`Class.forName()`方法,获取需要测试的Activity类。 3. 初始化Solo对象:在测试类的setUp()方法中,创建Solo对象,传入当前的Activity实例。 4. 编写测试用例:使用Solo提供的API,如`...

    dozer(PDF)

    - **超类映射**:如果源对象和目标对象具有共同的父类,则可以定义超类映射规则。 - **第三方对象工厂**:支持使用XMLBeans、JAXB等第三方框架来创建对象实例。 - **监听Dozer事件**:可以通过注册监听器来监控Dozer...

    Android-Kodein一个非常简单但非常有用的依赖检索容器

    Kodein是一个在Android开发中广泛使用的轻量级依赖注入框架,尤其在Kotlin环境下,它的易用性和灵活性深受开发者喜爱。依赖注入(Dependency Injection,简称DI)是一种设计模式,能够帮助开发者减少代码之间的耦合...

    大题合并版1

    1. 操作性需求(Operational Requirements):这些需求涉及系统的日常运行和维护,比如系统的易用性、可管理性、可部署性和可扩展性。例如,用户界面的友好性、系统升级的便利性以及硬件设备的灵活扩容能力。 2. ...

    JAVA的高级新特性

    例如,`@Override`用于标记一个方法覆盖了超类的方法,`@Deprecated`标记某个API不再推荐使用等。注解可以自定义,也可以使用预定义的系统注解。通过反射API,可以读取和处理程序中的注解信息。 这些特性极大地提升...

    Google Android SDK开发范例大全(完整版)

    但是,作为一种消费设备,它在易用性和 “新奇特性” 方面难以和 iPhone 抗衡。Android 则是一个年轻的、有待开发的平台,它有潜力同时涵盖移动电话的两个不同消费群体,甚至可能缩小工作和娱乐之间的差别 如今,很...

    Python内置函数案例演示.pdf

    Python作为一门广泛使用的高级编程语言,其内置函数的丰富性和易用性是其受欢迎的原因之一。Python的内置函数可以直接在Python环境中使用,无需额外导入模块。初学者通过学习和应用这些内置函数,可以更快速地编写...

Global site tag (gtag.js) - Google Analytics