今天分享一个在JPA进行CRUD的时候遇见的一个问题:父类如何获取子类传递的泛型!
时间:2019-06-13
本文章向大家介绍今天分享一个在JPA进行CRUD的时候遇见的一个问题:父类如何获取子类传递的泛型!,主要包括今天分享一个在JPA进行CRUD的时候遇见的一个问题:父类如何获取子类传递的泛型!使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我把Delete分享出来大家看看!
--------------------------------------------------------------------------------------------
public class IBasicDaoImpl<T> implements BasicDao<T> {
//实体类class
private Class<T> entityClass = null;
//ID字段的class
{
//getSuperclass 返回直接继承的父类(由于编译擦除,没有显示泛型参数)
// getGenericSuperclass 返回直接继承的父类(包含泛型参数)
Type type = getClass().getGenericSuperclass();
//解决多层继承拿泛型类型 //BaseServiceImpl<User> <- UserService <- PassportService
while(!(type instanceof ParameterizedType)){
type = ((Class<?>)type).getGenericSuperclass();
//为了避免写错代码出现死循环,加上这个保险。
if(type == null || "java.lang.Object".equals(type.getClass())){
break;
}
}
if(type instanceof ParameterizedType){
ParameterizedType parameterizedType = (ParameterizedType)type;
Type[] genericTypies = parameterizedType.getActualTypeArguments();
entityClass = (Class<T>)genericTypies[0];
}
}
--------------------------------------------------------------------------------------------------
public void delete(Long id) {
EntityManager entityManager = JpaUtils.getEntityManager();
try {
entityManager.getTransaction().begin();
//通过id去查询一个对象[持久状态的对象]
T t = entityManager.find(entityClass, id);
//删除数据[remove表示将一个持久状态的对象从表中移除]
entityManager.remove(t);
entityManager.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
//事务回滚
entityManager.getTransaction().rollback();
} finally {
//关闭资源
JpaUtils.close(entityManager);
JpaUtils.close();
}
}
}
代码就是上面的代码!过这样我们就可以解决父类如何获取子类传递的泛型的问题!
原文地址:https://www.cnblogs.com/DarryZz04/p/11016605.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python小例子(一)
- springmvc之RequestMapping注解既可以修饰类也可以修饰方法
- hadoop伪分布式之配置历史服务器
- 广度优先遍历--合法的括号
- hadoop伪分布式之配置日志聚集
- Kettle构建Hadoop ETL实践(二):安装与配置
- WKWebView加载沙盒HTML
- 【python-leetcode480-双堆】滑动窗口的中位数
- 虚拟机--python环境配置
- 利用装饰器计算函数运行的时间
- 【猫狗数据集】谷歌colab之使用pytorch读取自己数据集(猫狗数据集)
- python wraps的作用
- paddlepaddle中文词法分析LAC
- python *args,**kwargs参数
- (一)django创建