java 用JPA实现实体类中属性增删查改的泛型写法
时间: 2023-06-10 18:08:52 浏览: 117
以下是一个基于 JPA 的实体类属性增删查改的泛型写法示例:
```java
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
public abstract class BaseDao<T> {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void save(T entity) {
entityManager.persist(entity);
}
@Transactional
public void update(T entity) {
entityManager.merge(entity);
}
@Transactional
public void delete(T entity) {
entityManager.remove(entity);
}
public T findById(Class<T> clazz, Long id) {
return entityManager.find(clazz, id);
}
}
```
这里的 BaseDao 类是一个抽象类,其中定义了增删查改的基本操作,并使用了 JPA 的注解来管理实体类。其中,save() 方法用于保存实体类,update() 方法用于更新实体类,delete() 方法用于删除实体类,findById() 方法用于按照 ID 查找实体类。这些方法都是泛型方法,可以适用于任何实体类。
使用时,只需要继承 BaseDao 类,然后在子类中指定泛型参数即可,例如:
```java
@Repository
public class UserDao extends BaseDao<User> {
}
```
这样,UserDao 类就可以使用 BaseDao 中定义的增删查改方法了。
阅读全文