BaseDao实现Dao层代码优化
来源:互联网 发布:淘宝1元拍卖真的吗 编辑:程序博客网 时间:2024/06/05 00:58
在Dao层不同模块中,比如用户,联系人中的crud操作都有很多相同的方法,只是传的参数不同而已,可以将这些方法使用泛型进行统一起来。
1、写实现类BaseDao
public class BaseDao<T> extends HibernateDaoSupport {
private Class BaseClass;
public BaseDao() { //构造方法,子类继承是,创建子类实例会自动调用
Class class1=this.getClass(); //得到运行时类名,如有子类继承该类,则得到的是子类
Type type=class1.getGenericSuperclass(); //得到运行时子类继承的父类,即BaseDaoImpl<T>,当然T是具体类
ParameterizedType pType=(ParameterizedType) type; //一般是用Type子接口ParameterizedType中的方法
Type[] types=pType.getActualTypeArguments(); //得到泛型的类型,有时候不止一个,所以返回是数组
Class pClass=(Class) types[0]; //得到T,强转为Class
this.BaseClass=pClass; //给成员赋值,下面就可以使用了
}
public void add(T t) {
this.getHibernateTemplate().save(t);
}
public void delete(T t) {
this.getHibernateTemplate().delete(t);
}
public void update(T t) {
this.getHibernateTemplate().update(t);
}
@SuppressWarnings("all")
public T findOne(int cid) {
return (T) this.getHibernateTemplate().get(BaseClass, cid); / /由于这里要用到类,但是泛型不能写 T.class,所以上面用反射机制来得到泛型T具体的类
}
@SuppressWarnings("all")
public List<T> list() {
return (List<T>) this.getHibernateTemplate().find("from "+ BaseClass.getSimpleName());
}
}
2、Dao层不同模块的类去继承BaseDao
public class CustomerDao extends BaseDao<Customer> {
数据库crud操作不用在写
}
public class Link extends BaseDao<Customer> {
数据库crud操作不用在写
}
3 、这样就将Dao中相同的方法给抽取出来,主要记住,如何用反射去得到BaseDao<T>中T的具体类是什么
- BaseDao实现Dao层代码优化
- BaseDao --- dao层的抽取
- 9dao层的实现类中的配置BaseDao,所有的DaoImpl可以继承此类
- dao层的实现类中的配置BaseDao,所有的DaoImpl可以继承此类
- java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl
- java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl
- java实现人脸识别源码【含测试效果图】——Dao层(BaseDao)
- 使用ueditor实现多图片上传案例——Dao层(BaseDao)
- DAO层实现代码封装模板
- iOS下的dao层实现代码
- Hibernate DAO层 的BaseDao泛型写法
- dao层开发代码
- DAO层实现分页的方法.代码作为记录.
- hibernate+pageBean实现分页dao层功能代码
- 搭建DAO层和Service层代码
- 使用Servlet上传多张图片——Dao层(BaseDao.java)
- 通过泛型实现持久层 BaseDao 的写法
- JEE数据库基本操作Basedao层通用接口的实现
- JFreeChart使用示范
- 链表面试题(三)---当前结点前插入一个数据x
- android NFC开发
- 包管理工具学习
- amazon snowball存储不止一种方式
- BaseDao实现Dao层代码优化
- Android nfc读卡模式流程
- Android中的getApplication()、getApplicationContext的区别与用法
- 关于iOS 架构的文章
- 从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社
- Python 基础知识 HelloWord
- windows 启动关闭mysql服务
- 深入分析Java ClassLoader原理
- centos7 系统下HADOOP和Java 的环境配置