# entity-plugin
**Repository Path**: pychfarm_admin/entity-plugin
## Basic Information
- **Project Name**: entity-plugin
- **Description**: 实体对象配合JPA减少单表增删改查代码编写
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2021-03-01
- **Last Updated**: 2022-05-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Entity plugin
实体增强插件, 基于SpringDataJpa开发,通过一个注解的形式来得到单个对象的CRUD操作.
## Feature
- 支持JPA增删改查操作,无需编写额外的Controller(单表)
- 支持缓存层
- 支持自定义数据转换
- 支持自定义数据验证
## Use
### 引入依赖
```xml
entity-plugin-core
com.github.huifer
1.0.0-Releases
```
### 为JPA实体对象添加EntityPlugin注解
```java
@EntityPlugin(name = "/uri",
convertClass = OauthUserEntityConvertInSpring.class,
validateApiClass = OauthUserEntityValidate.class,
cacheKey = "oauth_client"
)
```
- name: url路由地址.
- convertClass: 负责进行转换的类,需要实现EntityConvert接口, 可以不填写,如果不填写请求参数(新增,修改)和返回对象将采用数据库对象,如果填写将根据EntityConvert实现类的泛型进行处理.
- validateApiClass: 负责进行验证的类,需要实现ValidateApi接口,可以不填写,将不做任何数据验证.
- cacheKey: 缓存名称.
### 业务层使用
- 在业务使用是需要注入EntityUseService依赖,具体代码如下:
```java
@Autowired
private EntityUseService entityUseService;
```
- 在EntityUseService接口中定义了如下四个方法:
```java
public interface EntityUseService {
T findById(String id, Class clazz);
T save(Object insertParam, Class clazz);
T update(Object updateParam, Class clazz);
Boolean deleteById(String id, Class> clazz);
}
```
- 在上述四个方法中是具备redis缓存操作,如果不想使用缓存可以将注解EntityPlugin的cacheKey属性设置为空字符串("").
### 自动Controller
- 在JPA实体对象上添加EntityPlugin注解后会自动开启Controller,**注意在自动Controller中并未携带Redis相关操作**,接口路由地址如下:
- 根据id查询
```http request
GET /{@EntityPlugin#Name}/{id}
```
路由说明: {@EntityPlugin#Name} 表示注解EntityPlugin的name数据值,{id}表示数据id
- 新增
```http request
POST /{@EntityPlugin#Name}
Content-Type: application/json
{}
```
路由说明: {@EntityPlugin#Name} 表示注解EntityPlugin的name数据值,参数body的数据需要根据EntityConvert接口中标记的新增泛型进行填写
- 修改
```http request
PUT /{@EntityPlugin#Name}
Content-Type: application/json
{}
```
路由说明: {@EntityPlugin#Name} 表示注解EntityPlugin的name数据值,参数body的数据需要根据EntityConvert接口中标记的新增泛型进行填写
- 根据id删除
```http request
DELETE /{@EntityPlugin#Name}/{id}
```
路由说明: {@EntityPlugin#Name} 表示注解EntityPlugin的name数据值,{id}表示数据id