博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dao层的泛型实现(2种方法)
阅读量:5076 次
发布时间:2019-06-12

本文共 3670 字,大约阅读时间需要 12 分钟。

一:

package com.wzs.test2.dao;import java.util.List;public interface CommonDAO {	public 
void sava(T entity); // 保存用户,无返回值; public
void remove(T entity); // 删除用户 public
void update(T entity); // 更新用户 public
T findById(Class
entityClass, Integer id); // 通过id来查找某一个用户; public
List
findAll(Class
entityclass); // 使用范型List<>。查询全部的用户信息}
package com.wzs.test2.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.wzs.test2.dao.CommonDAO;public class CommonDAOImpl extends HibernateDaoSupport implements CommonDAO {	@SuppressWarnings("unchecked")	public 
List
findAll(Class
entityclass) { String hql = "from " + entityclass.getName() + " as a order by a.id desc"; return this.getHibernateTemplate().find(hql); } @SuppressWarnings("unchecked") public
T findById(Class
entityClass, Integer id) { return (T) this.getHibernateTemplate().get(entityClass, id); } public
void remove(T entity) { this.getHibernateTemplate().delete(entity); } public
void sava(T entity) { this.getHibernateTemplate().save(entity); } public
void update(T entity) { this.getHibernateTemplate().update(entity); }}
二:

package com.wzs.test.dao;import java.io.Serializable;import java.util.Collection;public interface BaseDao
{ public void saveEntity(T t); public Collection
get(); public void updateEntity(T t); public void deleteEntity(Serializable id); public T getEntityById(Serializable id);}
package com.wzs.test.dao.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.Collection;import org.springframework.orm.hibernate3.HibernateTemplate;import com.wzs.test.dao.BaseDao;public class BaseDaoImpl
implements BaseDao
{ private HibernateTemplate hibernateTemplate; private Class classt; public BaseDaoImpl() { // ParameterizedType就是泛型,关键部分 ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass(); this.classt = (Class) type.getActualTypeArguments()[0];//
System.out.println(type.getRawType()); } public void deleteEntity(Serializable id) { T t = this.getEntityById(id); hibernateTemplate.delete(t); } public Collection
get() { System.out.println(classt.getSimpleName()); return this.hibernateTemplate.find("from " + classt.getSimpleName()); } public T getEntityById(Serializable id) { return (T) this.hibernateTemplate.get(classt, id); } public void saveEntity(T t) { this.hibernateTemplate.save(t); } public void updateEntity(T t) { this.hibernateTemplate.update(t); } // set&&get public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; }}
package com.wzs.test.dao;public interface StudentDao
extends BaseDao
{}
package com.wzs.test.dao.impl;import org.springframework.stereotype.Component;import com.wzs.test.dao.StudentDao;import com.wzs.test.dao.bean.Student;@Componentpublic class StudentDaoImpl extends BaseDaoImpl
implements StudentDao
{}
package com.wzs.test.dao.bean;public class Student {}
參考:

http://www.cnblogs.com/shenliang123/archive/2012/04/05/2433134.html

http://blog.csdn.net/qiaoge134/article/details/20228139

转载于:https://www.cnblogs.com/blfshiye/p/5398927.html

你可能感兴趣的文章
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
codevs 1080 线段树练习
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
Window 的引导过程
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>