public abstract class BaseDaoImpl<T> implements BaseDao<T> { private Class<T> clazz; public List<T> findAll() { return getSession().createQuery(// "FROM " + clazz.getSimpleName())// .list(); } }…
T.getClass()或者T.class都是非法的,因为T是泛型变量. 由于一个类的类型是什么是在编译期处理的,故不能在运行时直接在Base里得到T的实际类型. /** * 可以在service层直接调用,也可以在DAO层扩展调用 */ public class BaseDaoImpl<T> implements BaseDao<T> private Class<T> persistentClass; /** * 用于Dao层子类使用的构造函数. 通过子类的泛型定义取…
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;…
使用hibernate开发持久层时,我们会发现:虽然entity类的含义和需求不同,其对应的Dao层类对应的方法也是不同的.但是有许多方法操作确实相同的.比如实体的增加,删除,修改更新,以及许多常用的查询方法.这些都是可复用的.因此可以把这些操作写在一个BaseDao中,其他的dao都继承于这个Dao.每个子dao只写与自己的业务相关的方法,这样可以提高代码的复用,增加了开发效率,也方便今后可能的扩展.下面是我在我的项目中使用的BaseDao和BaseDaoImpl的使用方法.仅供参考: Bas…
在进入今天的主题之前,我们先理解一下什么是泛型: 泛型是java中一种类型,泛型是被参数化的类型. 类型-->class 参数化-->class类型可以是任意参数 泛型存在的意义:泛型可以在编译的时候,告诉class传递的参数是什么类型,如果类型发送错误,在编译的时候,就会报错. 泛型所表现的形式: 1.java的list,set等集合所表现的. //这里面的E表示的就是泛型, List<E> list = new ArrayList<E>(); //下面传入泛型的具体…
最近正在学习泛型DAO,通过网上查阅资料,汇总并自己整理了一下.提前需要学习的知识java反射.泛型 用到的反射如下: Class<T>类 是java.lang包下,Class类的实例表示正在运行的 Java 应用中的类和接口. Type接口 是java.lang.reflect包下的是Java类型的通用超级接口.这些包括原始类型,参数化类型,数组类型和类型变量 ParameterizedType接口 是java.lang.reflect包下是Type的子接口,表示一个参数化类型,如Colle…
1.JDBC 的工具包(utils):包含获取数据库连接, 关闭数据库资源等方法 JDBCTools_pro.java package com.app.utils; import java.beans.PropertyVetoException; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.s…
BaseDao接口的过人之处在于:一般是提供从数据库 增加.删除.修改记录.查询所有记录.查询符合某个条件记录.取得某条记录等方法的底层数据操作自定义类.由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类 xxDAO, 这些DAO继承BaseDAO 就可以省略很多重复代码(从数据库 增加.删除.修改记录.查询所有记录.查询符合某个条件记录.取得某条记录等方法的代码). 其次对于泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.…
类的继承 Java只支持单继承,不允许多重继承- 一个子类只能有一个父类- 一个父类可以派生出多个子类这里写图片描述子类继承了父类,就继承了父类的方法和属性.在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法.因而,子类通常比父类的功能更多.在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”. 关于继承的规则:    子类不能继承父类中私有的(private)的成员变量和方法. 访问控制 可以对Java类中定义的属性和方法进行访问控制…
首先解释一下为什么要学习泛型DAO.平时在写DAO的时候是一个接口对应一个实现类,实现类里面要写很多的操作数据库的方法.当我们有很多的javaben的时候我们会写很多的接口和实现类,并且里面的代码都是相同的,这样太麻烦,我们就不能写一个类,在类里面传入泛型,让类根据泛型,创建出一个实例对象,这样就出现了泛型DAO. 一.需要提前准备的知识如下 反射关键的类: Class<T>类 是java.lang包下,Class类的实例表示正在运行的 Java 应用中的类和接口. Type接口 是java.…