# 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