# lucy-jpa
**Repository Path**: lboot/lucy-jpa
## Basic Information
- **Project Name**: lucy-jpa
- **Description**: lucy JPA核心依赖,自定义审计,快速构建查询
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-03-24
- **Last Updated**: 2024-09-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, ORM
## README
Lucy
不断迭代的技术解决方案
---
lucy-jpa
 
## 简介
`lucy-jpa`是基于`lucy-spring-boot-starter`的`ORM`核心包,自定义构建数据库查询方式。
最小版本依赖关系:
| lucy-jpa | lucy-spring-boot-starter |
| -------- | ------------------------ |
| 1.0.8 | 1.1.2 |
## 准备
在引入任何 `Lucy`系列依赖之前,需要完成`jitpack`镜像仓库的配置。
```xml
jitpack.io
https://www.jitpack.io
```
## 集成
### 引入
在`pom`中引入,版本号与发行版一致。
```xml
com.gitee.lboot
lucy-jpa
1.0.8
```
### 配置
- 配置`JPA`审计
1. 在启动类上配置开启审计功能
```java
@EnableJpaAuditing
@SpringBootApplication
public class DemoApplication {
}
```
2. 拓展实现`JPA`审计接口
```java
@Configuration
public class AuditorConfig implements AuditorAware {
/**
* 返回操作人员ID
*/
@Override
public Optional getCurrentAuditor() {
// 根据自己使用的鉴权方案,实现代码不同
// SaToken 鉴权方案例
return Optional.of(StpUtil.getLoginIdAsString());
}
}
```
## 使用
通过完整流程介绍本`ORM `库的功能特性
### 1. 定义实体类
```java
@EqualsAndHashCode(callSuper = true)
@Data
@Entity
@Table(name = "sys_user")
@ApiModel(value = "用户信息实体",description = "用户实体信息管理")
public class SysUser extends LongBaseEntity implements Serializable {
}
```
通过继承不同的父类,实现对实体类的初始字段定义,可选父类列表如下:
| 父类 | ID类型 | ID策略 | 自动审计操作人员 | 自动审计操作日期 | 备注 |
| ------------------------- | ------ | ------ | ---------------- | ---------------- | ---------------------- |
| BaseEntity | String | 雪花ID | √ | √ | |
| LongBaseEntity | Long | 自增 | √ | √ | |
| DateAuditBaseEntity | String | 雪花ID | × | √ | 无审计人字段 |
| DateAuditLongBaseEntity | Long | 自增 | × | √ | 无审计人字段 |
| CustomAuditBaseEntity | String | 雪花ID | × | × | 审计信息手动赋值 |
| CustomAuditLongBaseEntity | Long | 自增 | × | × | 审计信息手动赋值 |
| NoAuditBaseEntity | String | 雪花ID | × | × | 无审计人、审计日期字段 |
| NoAuditLongBaseEntity | Long | 自增 | × | × | 无审计人、审计日期字段 |
### 2. 定义映射字段
```java
public class SysUser extends LongBaseEntity implements Serializable {
// ...
@ApiModelProperty("证件号码")
@Convert(converter = EncryptConverter.class)
@Column(name = "card_id")
private String cardId;
@ApiModelProperty("角色权限")
@Column(name = "permissions",length = 2048)
@Convert(converter = JpaListStringConverter.class)
List permissions;
}
```
例如List不可以直接存入数据库,通过使用不同的转化器实现数据库存储数据与Java对象之间的转化。
可选 `Convert`列表:
| 转化器 | 对象形式 | 存储形式 | 功能 |
| ---------------------- | -------------- | ------------ | -------------------- |
| EncryptConverter | `String` | 加密后字符串 | 加密数据(==弃用==) |
| JpaListLongConverter | `List` | JSON字符串 | |
| JpaListObjectConverter | `List