dao层的泛型实现(2种方法)
2016-04-16 17:48
459 查看
一:
二:
參考:
http://www.cnblogs.com/shenliang123/archive/2012/04/05/2433134.html http://blog.csdn.net/qiaoge134/article/details/20228139
package com.wzs.test2.dao; import java.util.List; public interface CommonDAO { public <T> void sava(T entity); // 保存用户,无返回值; public <T> void remove(T entity); // 删除用户 public <T> void update(T entity); // 更新用户 public <T> T findById(Class<T> entityClass, Integer id); // 通过id来查找某一个用户; public <T> List<T> findAll(Class<T> 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 <T> List<T> findAll(Class<T> entityclass) { String hql = "from " + entityclass.getName() + " as a order by a.id desc"; return this.getHibernateTemplate().find(hql); } @SuppressWarnings("unchecked") public <T> T findById(Class<T> entityClass, Integer id) { return (T) this.getHibernateTemplate().get(entityClass, id); } public <T> void remove(T entity) { this.getHibernateTemplate().delete(entity); } public <T> void sava(T entity) { this.getHibernateTemplate().save(entity); } public <T> void update(T entity) { this.getHibernateTemplate().update(entity); } }
二:
package com.wzs.test.dao; import java.io.Serializable; import java.util.Collection; public interface BaseDao<T> { public void saveEntity(T t); public Collection<T> 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<T> implements BaseDao<T> { private HibernateTemplate hibernateTemplate; private Class classt; public BaseDaoImpl() { // ParameterizedType就是泛型,关键部分 ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass(); this.classt = (Class) type.getActualTypeArguments()[0];// <T> System.out.println(type.getRawType()); } public void deleteEntity(Serializable id) { T t = this.getEntityById(id); hibernateTemplate.delete(t); } public Collection<T> 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<Student> extends BaseDao<Student> { }
package com.wzs.test.dao.impl; import org.springframework.stereotype.Component; import com.wzs.test.dao.StudentDao; import com.wzs.test.dao.bean.Student; @Component public class StudentDaoImpl extends BaseDaoImpl<Student> implements StudentDao<Student> { }
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
相关文章推荐
- Java-单机版的书店管理系统(练习设计模块和思想_系列 六 )
- 修改ckeditor/ckfinder上传文件文件夹 路径以日期格式命名
- OK335xS PMIC(TPS65910A3A1RSL) reset
- 强制IE浏览器或WebBrowser控件使用指定版本显示网页
- UIButton实现控制动画的开始和停止
- PhotoShop CS3 批量处理图片
- qt中如何播放声音
- 手机点击输入框,弹出输入法会盖住web的文本框问题。
- geotrellis使用(二)geotrellis-chatta-demo以及geotrellis框架数据读取方式初探
- pthread几个互斥锁和条件变量接口
- 青蛙的约会gcd
- android Mediaplayer各种属性和方法简单介绍
- Ubuntu下搭建tftp服务器最简单方法
- 每天一个linux命令(8):rm
- 线性表基本操作
- 2016.4.16
- Codeforces Gym 100543G Virus synthesis
- 线程通讯的几种方式
- 近100个linux常用命令大全
- java web 分页实现的补充