java的SSH的baseDao,巧用泛型

帅比萌擦擦* 提交于 2021-02-17 22:37:26

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>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!