java如何用反射把具体方法抽象_如何在Java 中使用泛型或反射机制对DAO进行抽象...
如何在Java 中使用泛型或反射机制对DAO进行抽象
发布时间:2020-11-26 16:07:42
来源:亿速云
阅读:80
作者:Leah
本篇文章为大家展示了如何在Java 中使用泛型或反射机制对DAO进行抽象,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
Java 中利用泛型和反射机制抽象DAO的实例
一般的DAO都有CRUD操作,在每个实体DAO接口中重复定义这些方法,不如提供一个通用的DAO接口,具体的实体DAO可以扩展这个通用DAO以提供特殊的操作,从而将DAO抽象到另一层次,令代码质量有很好的提升
1.通用接口import java.io.Serializable;
import java.util.List;
public interface BaseDao {
T get(Serializable id);
List getAll();
// List find(String hql,);
void save(Object o);
void remove(Object o);
void update(Object o);
}
2.DAO基类import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class HibernateBaseDao extends HibernateDaoSupport implements BaseDao{
private Class entityClass;
public HibernateBaseDao() {
Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
entityClass = (Class)params[0];
}
public T get(Serializable id) {
return (T)getHibernateTemplate().load(entityClass, id);
}
public List getAll() {
return getHibernateTemplate().loadAll(entityClass);
}
public void save(Object o) {
getHibernateTemplate().saveOrUpdate(o);
}
public void remove(Object o) {
getHibernateTemplate().delete(o);
}
public void update(Object o) {
getHibernateTemplate().update(o);
}
}
这里利用反射机制获取泛型对应的实体类的类型
3.实体DAO类import java.util.Iterator;
import java.util.List;
import com.baobaotao.dao.ForumDao;
import com.baobaotao.dao.HibernateBaseDao;
import com.baobaotao.domain.Forum;
public class ForumHibernateDao2 extends HibernateBaseDao implements ForumDao{
public long getForumNum() {
Iterator iter = getHibernateTemplate().iterate(
"select count(f.forumId) from Forum f");
return ((Long)iter.next());
}
}
通过扩展泛型DAO基类,就自动拥有基类的数据操作功能,只要提供特殊的功能即可,实体DAO的编码生产率得到了极大的提高
上述内容就是如何在Java 中使用泛型或反射机制对DAO进行抽象,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
java如何用反射把具体方法抽象_如何在Java 中使用泛型或反射机制对DAO进行抽象...相关推荐
- java 反射父类私有属性值_如何在Java中通过反射访问父类的父类的私有字段? - java...
在一个API中,我使用的是一个抽象类(A类),该类具有一个私有字段(A.privateField). B类在API中扩展了A类. 我需要扩展B类的实现,即C类,但是我需要A类的privateField ...
- java如何给一个链表定义和传值_如何在CUDA中为Transformer编写一个PyTorch自定义层...
如今,深度学习模型处于持续的演进中,它们正变得庞大而复杂.研究者们通常通过组合现有的 TensorFlow 或 PyTorch 操作符来发现新的架构.然而,有时候,我们可能需要通过自定义的操作符来实现 ...
- java如何解压rar文件怎么打开_如何在java中实现对zip和rar文件的解压
如何在java中实现对zip和rar文件的解压 关注:101 答案:1 mip版 解决时间 2021-01-26 10:50 提问者芣①樣哋羙莮 2021-01-25 22:44 如何在java中 ...
- java把一段英文拆成单词_如何在java中将句子拆分成单词和标点符号
与其试图提出一个模式来进行拆分,不如通过提出一个要捕获的元素的模式来解决这个难题. 尽管它不仅仅是一个简单的 split() ,它仍然可以在Java 9+中的单个语句中完成: String regex ...
- Java一种错误的实例化方法:在默认无参构造函数中进行实例化
Java一种错误的实例化方法:在默认无参构造函数中进行实例化 代码如下: package Construction_test;public class A {static int i=0;public ...
- Java中的泛型与异常机制
Java中的泛型与异常机制 ※泛型的使用 如果在使用集合时没有限定集合所保存的数据类型,则在代码运行期间容易会出现ClassCastException类转换的异常 通过设置泛型,可以在编译期间发生问题 ...
- 【笔记】JAVA中的泛型和反射
泛型 Java的泛型是如何工作的?什么是类型擦除? ----泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息.例如List在运行时仅用一个Lis ...
- java 方法当参数_如何在Java中将函数作为参数传递?
如何在Java中将函数作为参数传递? 这个问题在这里已有答案: Java Pass方法作为参数 14个答案 是否可以将方法作为参 ...
- java对密码进行加密的方法_如何在JAVA中使用MD5加密对密码进行加密
如何在JAVA中使用MD5加密对密码进行加密 发布时间:2020-11-25 17:12:40 来源:亿速云 阅读:118 作者:Leah 本篇文章为大家展示了如何在JAVA中使用MD5加密对密码进行 ...
最新文章
- uvm_dpi——DPI在UVM中的实现(一)
- QT 的信号与槽机制介绍
- python文件读取输出-Python 读写文件中数据
- Ansj中文分词Java开发小记
- Maven学习总结(十)——使用Maven编译项目gbk的不可映射问题
- TCP滑动窗口和拥塞控制机制
- Java –手工Classloader隔离
- Powerline专用字体安装_PowerFonts字体库安装_Meslo LG字体安装
- 选择排序与冒泡排序的区别
- Swift - 循环强引用,内存泄漏
- 首例猪心移植人体,川妹子立大功!36 岁哈佛女学霸敲除猪致病基因,成顶刊收割机...
- BZOJ2059: [Usaco2010 Nov]Buying Feed 购买饲料
- 一文讲解安卓应用软件开发有什么优势?
- (转载)网络互联参考模型(详解)
- 你所不了解的“三消”游戏
- ( cf1249 )Codeforces Round #595 (Div. 3)部分题解
- 井字游戏HTML,HTML5井字棋游戏
- 爱快iKuai软路由系统远程升级(从2.5.10系统升级至3.X系列)教程(图文详解)
- JS match() 方法 使用
- U8C报表模板已设置,任务已分配仍无法查看报表数据
热门文章
- 【题解】生日蛋糕-C++
- [洛谷P3550][POI2013]TAK-Taxis
- 不同包之间的继承extends
- laravel event
- Character,String相关方法,Int,double互相转换
- 如何有效提高你的沟通技巧
- dudu: 图片显示错误问题,望更正
- Python之数据分析(卷积运算、移动均线、布林带)
- winformbutton边框怎么改_C#(winform)为button添加背景图片,并去掉各种边框
- collection集合 地址_有容乃大--Java 集合(List/Set/Map)