我把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
时间: 2024-11-01 01:33:54