博客
关于我
通过反射技术获取泛型真实实例
阅读量:431 次
发布时间:2019-03-06

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

使用这项技术可以对dao层进行简化处理:

把各个dao中相同的方法抽取出来形成一个公共dao:BaseDao

代码如下:

public class BaseDao
implements 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); }}

 

转载地址:http://rwayz.baihongyu.com/

你可能感兴趣的文章
weblogic之cve-2015-4852
查看>>
Java注释
查看>>
C++ 函数重载
查看>>
使用mybatis-generator生成底层
查看>>
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
查看>>
lvs+keepalive构建高可用集群
查看>>
6 个 Linux 运维典型问题
查看>>
Failed to get D-Bus connection: Operation not permitted解决
查看>>
取消vim打开文件全是黄色方法
查看>>
一个系统部署多个tomcat实例
查看>>
使用QT实现一个简单的登陆对话框(纯代码实现C++)
查看>>
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
查看>>
GLFW 源码 下载-编译-使用/GLAD配置
查看>>
Typescript 学习笔记六:接口
查看>>
OpenJDK1.8.0 源码解析————HashMap的实现(一)
查看>>
MySQL-时区导致的时间前后端不一致
查看>>
2021-04-05阅读小笔记:局部性原理
查看>>
go语言简单介绍,增强了解
查看>>
架构师入门:搭建基本的Eureka架构(从项目里抽取)
查看>>
sctf_2019_easy_heap
查看>>