# data_generator **Repository Path**: hushnows/data_generator ## Basic Information - **Project Name**: data_generator - **Description**: 一个造数神器 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-23 - **Last Updated**: 2026-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## FakeData 生成工具(Java 8+) 一个轻量级、零依赖、基于注解的 Java 对象模拟数据填充工具。 适用于单元测试、开发调试、演示数据生成等场景。 ✅ 兼容 JDK 1.8 ✅ 线程安全 ✅ 支持 null 随机注入 ✅ 支持 NOW / FIXED / RANDOM / STEP 四种生成策略 ## 使用 ```dtd org.robert fakedata 1.0.1 ``` > 调用 ```java EventLog eventLog = ObjectGenerator.generate(EventLog.class); List eventLogs = ObjectGenerator.generateList(EventLog.class, 10); ``` > 目录结构 ```dtd src/main/java └── org/robert/fakedata/ ├── annotation/ │ ├── FakeId.java │ ├── FakeInt.java │ ├── FakeString.java │ ├── FakeLocalDateTime.java │ └── ...(其他注解) ├── generator/ │ ├── IdGenerator.java │ ├── IntGenerator.java │ ├── StringGenerator.java │ ├── LocalDateTimeGenerator.java │ └── ...(其他生成器) └── ObjectGenerator.java ``` ### 支持的注解列表 #### 时间数据生成工具 | 注解 | 目标类型 | 说明 | |------|--------|------| | `@FakeLocalDateTime` | `LocalDateTime` | 生成带时分秒的本地时间 | | `@FakeLocalDate` | `LocalDate` | 生成仅日期(年月日) | | `@FakeDate` | `java.util.Date`| 生成传统 `Date` 对象 | | `@FakeDateString` | `String` | 生成格式化的日期字符串 | #### 基础数据类型注解 | 注解 | 目标类型 | 说明 | |------|--------|------| | `@FakeId` | `Long`, `Integer`, `String` | 生成唯一 ID(雪花/自增/UUID) | | `@FakeInt` | `int`, `Integer` | 生成整数 | | `@FakeLong` | `long`, `Long` | 生成长整型 | | `@FakeDouble` | `double`, `Double` | 生成浮点数 | | `@FakeBoolean` | `boolean`, `Boolean` | 生成布尔值 | | `@FakeChar` | `char`, `Character` | 生成单个字符 | | `@FakeString` | `String` | 生成随机字符串 | #### 注解说明 1. @FakeLocalDateTime 作用: 标记字段为需要生成的 LocalDateTime 类型的时间。 属性: isNull: 是否允许为空(默认 false) type: 数据生成策略 (NOW, FIXED, RANDOM, STEP) fixedValue: 当 type = FIXED 时使用的固定值 step: 当 type = STEP 时每次递增的数量 unit: 时间单位 (DAYS, HOURS, 等) min, max: 当 type = RANDOM 时随机范围的最小值和最大值 2. @FakeLocalDate 作用: 标记字段为需要生成的 LocalDate 类型的日期。 属性: 同 @FakeLocalDateTime,但仅支持天数以上的时间单位。 3. @FakeDate 作用: 标记字段为需要生成的 java.util.Date 类型的时间。 属性: 同 @FakeLocalDateTime,增加了 pattern 属性用于解析固定值。 4. @FakeDateString 作用: 标记字段为需要生成的格式化后的日期字符串。 属性: 同 @FakeDate,但结果是一个字符串而不是 Date 对象。 5. @FakeId 6. @FakeInt * 生成 [min, max] 范围内的随机整数(含两端) 7. @FakeLong 8. @FakeDouble 9. @FakeBoolean 10. @FakeChar 11. @FakeString #### 使用方法 ```java public class UserDemo { // ID 生成 @FakeId(type = FakeIdType.SNOWFLAKE) private Long userId; @FakeId(type = FakeIdType.UUID) private String traceId; // 基础类型 @FakeString(minLength = 3, maxLength = 10) private String username; @FakeInt(min = 18, max = 80) private Integer age; @FakeDouble(min = 3000.0, max = 20000.0, scale = 2) private Double salary; @FakeBoolean(trueProbability = 0.8) private Boolean isActive; @FakeChar(chars = {'M', 'F'}) private Character gender; // 时间类型 @FakeLocalDateTime(type = FakeDateTypeEnum.STEP, step = 1, unit = FakeDateUnitEnum.HOURS) private LocalDateTime loginTime; @FakeLocalDate(type = FakeDateTypeEnum.RANDOM, min = -365, max = 0, unit = FakeDateUnitEnum.DAYS) private LocalDate registerDate; @FakeDate(type = FakeDateTypeEnum.FIXED, fixedValue = "2020-01-01 00:00:00") private Date createdAt; @FakeDateString(pattern = "yyyy年MM月dd日 HH:mm", type = FakeDateTypeEnum.NOW) private String lastSeen; } ```