package com.atguigu.surveypark.dao.impl;

import java.lang.reflect.ParameterizedType;
import java.util.List; import javax.annotation.Resource; import org.hibernate.Query;
import org.hibernate.SessionFactory; import com.atguigu.surveypark.dao.BaseDao; /**
* 抽象的dao实现,专门用于继承
*/
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl<T> implements BaseDao<T> { //注入sessionFactory
@Resource
private SessionFactory sf ; private Class<T> clazz ; public BaseDaoImpl(){
//得到泛型话超类
ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
clazz = (Class<T>) type.getActualTypeArguments()[0];
} public void saveEntity(T t) {
sf.getCurrentSession().save(t);
} public void saveOrUpdateEntity(T t) {
sf.getCurrentSession().saveOrUpdate(t);
} public void updateEntity(T t) {
sf.getCurrentSession().update(t);
} public void deleteEntity(T t) {
sf.getCurrentSession().delete(t);
} /**
* 按照HQL语句进行批量更新
*/
public void batchEntityByHQL(String hql, Object... objects) {
Query q = sf.getCurrentSession().createQuery(hql);
for(int i = 0 ; i < objects.length ; i ++){
q.setParameter(i, objects[i]);
}
q.executeUpdate();
} public T loadEntity(Integer id) {
return (T) sf.getCurrentSession().load(clazz, id);
} public T getEntity(Integer id) {
return (T) sf.getCurrentSession().get(clazz, id);
} public List<T> findEntityByHQL(String hql, Object... objects) {
Query q = sf.getCurrentSession().createQuery(hql);
for(int i = 0 ; i < objects.length ; i ++){
q.setParameter(i, objects[i]);
}
return q.list();
}
}

  

泛型baseDaoImpl类中如何知道具体子类的class类型的更多相关文章

  1. 在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句:

    在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句: 如果是String类型的字符串进行判空的时候: <if test=&q ...

  2. Runtime获取一个类中所有成员变量的名字和类型

  3. 泛型方法或泛型类中的方法是内部调用、PInvoke 或是在 COM 导入类中定义的。

    泛型基类中引用Api函数定义时static extern,在子类中会提示: 未处理TypeLoadException 泛型方法或泛型类中的方法是内部调用.PInvoke 或是在 COM 导入类中定义的 ...

  4. C++ 类中的3种权限作用范围

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 #include <iostream> #in ...

  5. C++ 类中的3种访问权限和继承方式

    访问权限:public 可以被任意实体访问,protected 只允许子类(无论什么继承方式)及本类的成员函数访问,private 只允许本类的成员函数访问.三种继承方式分别是 public 继承,p ...

  6. C++:类中的赋值函数

    先来看一个例子: #include<iostream> #include<string> using namespace std; class Student{ public: ...

  7. java数据类型:集合存储元素类型限制<泛型> ;自定义类指定泛型<T> 以及限制用法;派生子类泛型<T> super(泛型内参数); 泛型通配符?以及?限制用法

    问题背景 Java 集合有个缺点,把一个对象"丢进"集合里之后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时 该对象的编译类型就变Object类型(其 ...

  8. java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题

    /* 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中, 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的,而原构造函数中的代码则移到了构造函数的最后执行 */ impo ...

  9. 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;School 中计算平均分的方法是所有科目的分数之和除以总科目数。 要求:定义ComputerAv

    题目: 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数. 定义 Gymnastics 类和 School 类,它们都是 ComputerAverag ...

随机推荐

  1. P1147连续自然数和

    洛谷1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所 ...

  2. BFS 或 同余模定理(poj 1426)

    题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple  非零倍数  啊. 英语弱到爆炸,理解不了题意... ...

  3. HDU 5024 Wang Xifeng's Little Plot (DP)

    题意:给定一个n*m的矩阵,#表示不能走,.表示能走,让你求出最长的一条路,并且最多拐弯一次且为90度. 析:DP,dp[i][j][k][d] 表示当前在(i, j)位置,第 k 个方向,转了 d ...

  4. 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...

  5. 作业,备份,存储过程,sqlserver print 语句,输出字符串

    declare @filename nvarchar(100) set @filename='H:/backOrder/'+ convert(varchar(50),getdate(),112)+ l ...

  6. 整理ORACLE数据库备份常用术语

    本文将讲述在备份是常用的数据库相关术语以及业界定义的专业术语,供大家参考和学习. 数据库相关术语: (1)冷备份: 冷备份是将数据库关闭之后,将数据文件.联机日志文件.控制文件拷贝到其他地方进行备份. ...

  7. 跟我一起学WCF(10)——WCF中事务处理

    一.引言 好久没更新,总感觉自己欠了什么一样的,所以今天迫不及待地来更新了,因为后面还有好几个系列准备些,还有很多东西需要学习总结的.今天就来介绍下WCF对事务的支持. 二.WCF事务详解 2.1 事 ...

  8. 跟我一起学WCF(3)——利用Web Services开发分布式应用

    一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...

  9. 设计模式之美:Factory Method(工厂方法)

    索引 别名 意图 结构 参与者 适用性 缺点 效果 相关模式 命名约定 实现 实现方式(一):Creator 类是一个抽象类并且不提供它所声明的工厂方法的实现. 实现方式(二):Creator 类是一 ...

  10. Nginx学习笔记(三) Nginx基本数据结构

    Nginx基本数据结构 话说学习一种编程语言,例如C语言,我们首先学的也是数据结构,这是以后开发程序的关键.为了更好更方便的开发Nginx,Nginx自己实现了很多适合nginx的数据结构. Ngin ...