java的SSH的baseDao,巧用泛型

coding

BaseDao接口:

import java.util.List;

public interface BaseDao<T,PK> {

public void add(T t);

public void upd(T t);

public void del(PK id);

public T getById(PK id);

public List<T> getAll();

public List<Track> getByAid(String activityId);

}

BaseDaoImple:

import java.io.Serializable;

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.orm.hibernate5.HibernateTemplate;

public class BaseDaoImple<T, PK> implements BaseDao<T, PK> {

// 保存当前类处理的实体类型对象类型

private Class clazz;

public BaseDaoImple() {

Type clas = this.getClass().getGenericSuperclass();

ParameterizedType pt = (ParameterizedType) clas;

Type[] ts = pt.getActualTypeArguments();

// 获取第一个泛型类型

clazz = (Class) ts[0];

}

@Autowired

private HibernateTemplate hibernateTemplate;

@Override

public void add(T t) {

hibernateTemplate.save(t);

}

@Override

public void upd(T t) {

hibernateTemplate.update(t);

}

@Override

public void del(PK id) {

hibernateTemplate.delete(this.getById(id));

}

@Override

public T getById(PK id) {

return (T) hibernateTemplate.get(clazz, (Serializable) id);

}

@Override

public List<T> getAll() {

return hibernateTemplate.loadAll(clazz);

}

@Override

public List<Track> getByAid(String activityId) {

String queryString = "from Track where activity.activityId = ?";

return (List<Track>) hibernateTemplate.find(queryString, activityId);

}

}

<!-- 整个web容器的动向由这个监听器进行监听. 这个监听器可以监听项目的启动. 从而直接加载核心配置文件 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

以上是 java的SSH的baseDao,巧用泛型 的全部内容, 来源链接: utcz.com/z/509006.html

回到顶部