您现在的位置是:主页 > news > 丹阳做公司网站的/网络广告策划与制作

丹阳做公司网站的/网络广告策划与制作

admin2025/5/23 15:24:15news

简介丹阳做公司网站的,网络广告策划与制作,全国建筑行业资质查询平台,免费广告行业网站建设引用维基百科的定义:泛型的定义主要有以下两种:在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在…

丹阳做公司网站的,网络广告策划与制作,全国建筑行业资质查询平台,免费广告行业网站建设引用维基百科的定义:泛型的定义主要有以下两种:在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在…

引用维基百科的定义:

泛型的定义主要有以下两种:

在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)

在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在人们大多把这称作模板)

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

泛型只不过是java中的类型而已,继承自Type接口。

26deca6e6481fb3c9a4425e3200fe35e.png

泛型的意义在于:在抽象的时候泛化,在具体的时候细化,在编译的时候就可以决定泛化的值。通俗得讲,可以将泛型看做是类或者接口带了一个参数,这个参数可以在属性、方法的参数、方法的返回值中使用使用。

ParameterizedType有如下几个方法:

actualTypeArguments指类的参数

rawType指带了参数的类或者接口 了解这些之后,就可以对使用了Hibernate的Dao进行一次CRUD的重构。

import java.lang.reflect.ParameterizedType;

import java.util.Collection;

import javax.annotation.Resource;

import org.hibernate.Query;

import org.hibernate.SessionFactory;

/**

* 超类dao实现,专门用于继承

*/

@SuppressWarnings("unchecked")

public abstract class BaseDaoImpl implements BaseDao {

//注入会话工厂

@Resource(name="sessionFactory")

private SessionFactory sf ;

private Class clazz ;

/**

* 1、this代表该类的子类

* 2、this.getClass().getGenericSuperclass()代表该类

* 3、type.getActualTypeArguments()[0]就是T

* 4、type.getRawType()就是BaseDaoImpl

*/

public BaseDaoImpl(){

ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();

clazz = (Class) type.getActualTypeArguments()[0];

}

public void saveEntity(T t) {

sf.getCurrentSession().save(t);

}

public void updateEntity(T t) {

sf.getCurrentSession().update(t);

}

public void saveOrUpdateEntity(T t) {

sf.getCurrentSession().saveOrUpdate(t);

}

public void deleteEntity(T t) {

sf.getCurrentSession().delete(t);

}

//批量更新

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 getEntity(Integer id) {

return (T) sf.getCurrentSession().get(clazz, id);

}

public T loadEntity(Integer id) {

return (T) sf.getCurrentSession().load(clazz, id);

}

public Collection 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();

}

}

其他的dao只要继承此类即可。

另外推荐两篇文章: