Spring boot jpa 底层封装

pom:

<!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version><!--$NO-MVN-MAN-VER$-->
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!--百度搜索-->

 

1.BaseDao

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;

@NoRepositoryBean
public interface BaseRepo<T> extends JpaRepository<T,Integer>,JpaSpecificationExecutor<T>{

}

 

2.BaseEntity

import java.io.Serializable;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public class BaseEntity implements Serializable
{
private static final long serialVersionUID = 5316912770609152144L;

}

3.BaseService

import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.transaction.annotation.Transactional;

/**
* 底层封装Service
* 提供一些基本操作
* @author x_luwl
*
*/
@Transactional(rollbackFor = Exception.class)
public class BaseService<T extends BaseRepo<D>, D extends BaseEntity> {

private T dao;

protected void setDao(T dao) {
this.dao = dao;
}
public T getDao() {
return this.dao;
}

@Resource
@PersistenceContext
private EntityManager entityManager;

}

posted @   雨梦大木  阅读(1959)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示