定义模型
实体类
quickjava-orm 通过 Java POJO 类映射数据库表。实体类使用注解声明表名、字段映射、主键和逻辑删除等元信息。
注解参考
@ModelName
标注实体类对应的数据库表名。
@ModelName("shop_user") // 指定表名
@ModelName(value = "shop_user", excludeProperty = {"createName", "updateName"})
public class User { }
| 参数 | 类型 | 说明 |
|---|---|---|
value | String | 表名(为空时自动推断) |
excludeProperty | String[] | 排除的属性名,不参与数据库映射 |
@ModelId
标注主键字段。
public class User {
@ModelId
private Long id;
}
| 参数 | 类型 | 说明 |
|---|---|---|
value | String | 属性名(默认空) |
type | ModelIdType | 主键类型 |
@ModelField
标注字段到数据库列的映射。
public class UserThird {
@ModelField("avatarUrl") // 自定义列名
private String avatarUrl;
@ModelField(exist = false) // 非数据库字段
private UserThird third;
@ModelField(insertFill = ModelFieldFill.DATETIME)
private Date createTime;
@ModelField(updateFill = ModelFieldFill.DATETIME)
private Date updateTime;
}
| 参数 | 类型 | 说明 |
|---|---|---|
value | String | 自定义列名(默认驼峰转下划线) |
exist | boolean | 是否为数据库字段,false 表示内存字段 |
insertFill | ModelFieldFill | 插入时自动填充策略 |
insertFillMethod | String | 插入时自定义填充方法 |
updateFill | ModelFieldFill | 更新时自动填充策略 |
updateFillMethod | String | 更新时自定义填充方法 |
format | String | 日期格式(Date 类型生效) |
@ModelLogic
标注逻辑删除字段。
public class User {
@ModelLogic(value = "0", deleteVal = "2")
private String delFlag;
// 日期类型:删除时自动填充当前时间
@ModelLogic(deleteValFill = ModelFieldFill.DATETIME)
private Date deleteTime;
}
| 参数 | 类型 | 说明 |
|---|---|---|
value | String | 未删除时的值(空表示 IS NULL) |
deleteVal | String | 删除后的值 |
deleteValFill | ModelFieldFill | 删除时填充策略 |
deleteValFillMethod | String | 删除时自定义填充方法 |
完整实体示例
@ModelName(value = "shop_user", excludeProperty = {"createName", "updateName"})
public class User {
@ModelId
private Long id;
private Long tenantId;
@ModelField(exist = false)
private String tenantName;
private String userName;
private String nickName;
private String email;
private String mobile;
private String sex;
private String avatar;
@ModelField(exist = false)
private String password;
private String status;
@ModelLogic(value = "0", deleteVal = "2")
private String delFlag;
private String loginIp;
@ModelField(insertFill = ModelFieldFill.DATETIME)
private Date createTime;
@ModelField(updateFill = ModelFieldFill.DATETIME)
private Date updateTime;
@ModelField(exist = false)
private UserThird third;
// getters and setters ...
}
字段命名规则
- Java 驼峰命名(
nickName)自动映射为数据库下划线命名(nick_name) - 可通过
@ModelField("custom_column")指定自定义列名 @ModelField(exist = false)标注的字段不参与数据库映射
模型继承
支持继承 BaseEntity 复用公共字段:
public class BaseEntity {
@ModelField(insertFill = ModelFieldFill.DATETIME)
private Date createTime;
@ModelField(updateFill = ModelFieldFill.DATETIME)
private Date updateTime;
}
@ModelName("shop_user")
public class User extends BaseEntity {
@ModelId
private Long id;
// ... 业务字段
}
自动填充策略
ModelFieldFill 枚举值:
| 值 | 说明 |
|---|---|
DATETIME | 自动填充当前日期时间 |
DATE | 自动填充当前日期 |
TIME | 自动填充当前时间 |
TIMESTAMP | 自动填充当前时间戳 |
DEFAULT | Java 类型默认值 |
IGNORE | 不自动填充 |
