
通过反射技术获取泛型真实实例
发布日期:2021-05-09 04:57:20
浏览次数:11
分类:博客文章
本文共 1625 字,大约阅读时间需要 5 分钟。
使用这项技术可以对dao层进行简化处理:
把各个dao中相同的方法抽取出来形成一个公共dao:BaseDao
代码如下:
public class BaseDaoimplements IBaseDao { // 当前操作的实际的bean类型 private Class clazz; // 获取类名称 private String className; // 反射泛型 public BaseDao(){ Type type = this.getClass().getGenericSuperclass(); // 转换为参数化类型 ParameterizedType pt = (ParameterizedType) type; // BaseDao // 得到实际类型 Type types[] = pt.getActualTypeArguments(); // 获取实际类型 clazz = (Class ) types[0]; className = clazz.getSimpleName();//例如:Employee } // 容器注入 private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public SessionFactory getSessionFactory() { return sessionFactory; } //下面的代码就是被抽取出的相同的代码,功能来自于接口的实现 @Override public void delete(int id) { sessionFactory .getCurrentSession() .createQuery("delete from " + className + " where id=?") .setParameter(0, id).executeUpdate(); } @SuppressWarnings("unchecked") @Override public T findById(int id) { return (T) sessionFactory.getCurrentSession().get(clazz, id); } @SuppressWarnings("unchecked") @Override public List getAll() { return sessionFactory.getCurrentSession().createQuery("from " + className).list(); } @Override public void save(T t) { sessionFactory.getCurrentSession().save(t); } @Override public void update(T t) { sessionFactory.getCurrentSession().update(t); }}
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月08日 16时28分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MMORPG大型游戏设计与开发(客户端架构 part3 of vegine)
2021-05-09
C基础 带你手写 redis ae 事件驱动模型
2021-05-09
深度优先搜索和广度优先搜索
2021-05-09
我是个怎样的人
2021-05-09
C基础 工程中常用的排序
2021-05-09
6.Android-五大布局
2021-05-09
第3阶段——内核启动分析之start_kernel初始化函数(5)
2021-05-09
12.Linux之输入子系统分析(详解)
2021-05-09
19.QT-事件发送函数sendEvent()、postEvent()
2021-05-09
MyBatis 面试题
2021-05-09
源码解析之 Mybatis 对 Integer 参数做了什么手脚?
2021-05-09
oracle使用DBMS_RANDOM包生成随机数据
2021-05-09
[转]收集Oracle UNDO诊断信息脚本
2021-05-09
.NET Core 2.0 Preview 1发布下载和文档
2021-05-09
Qt快速入门之三:Qt项目建立、编译、运行和源码详解
2021-05-09
Qt 布局之三:栅格布局的使用详解
2021-05-09
【QML 快速入门】属性(Properties)
2021-05-09
音视频基础知识---像素格式YUV(转)
2021-05-09
音视频-测试工具推荐
2021-05-09