QuickJava-ORMQuickJava-ORM
首页
快速安装
关于我们
首页
快速安装
关于我们
  • 开始

    • 快速安装
    • 手动安装
    • 兼容性
    • 版本对应关系
  • 模型定义

    • 定义模型
    • 常见问题
  • 构造器/Wrapper

    • 查询
    • 关联查询
    • 增加
    • 修改
    • 删除
    • 逻辑删除
    • 常见问题
  • 其他
    • 关于我们
    • 性能基准
    • Gitee
    • Github

定义模型

实体类

quickjava-orm 通过 Java POJO 类映射数据库表。实体类使用注解声明表名、字段映射、主键和逻辑删除等元信息。

注解参考

@ModelName

标注实体类对应的数据库表名。

@ModelName("shop_user")                        // 指定表名
@ModelName(value = "shop_user", excludeProperty = {"createName", "updateName"})
public class User { }
参数类型说明
valueString表名(为空时自动推断)
excludePropertyString[]排除的属性名,不参与数据库映射

@ModelId

标注主键字段。

public class User {
    @ModelId
    private Long id;
}
参数类型说明
valueString属性名(默认空)
typeModelIdType主键类型

@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;
}
参数类型说明
valueString自定义列名(默认驼峰转下划线)
existboolean是否为数据库字段,false 表示内存字段
insertFillModelFieldFill插入时自动填充策略
insertFillMethodString插入时自定义填充方法
updateFillModelFieldFill更新时自动填充策略
updateFillMethodString更新时自定义填充方法
formatString日期格式(Date 类型生效)

@ModelLogic

标注逻辑删除字段。

public class User {

    @ModelLogic(value = "0", deleteVal = "2")
    private String delFlag;

    // 日期类型:删除时自动填充当前时间
    @ModelLogic(deleteValFill = ModelFieldFill.DATETIME)
    private Date deleteTime;
}
参数类型说明
valueString未删除时的值(空表示 IS NULL)
deleteValString删除后的值
deleteValFillModelFieldFill删除时填充策略
deleteValFillMethodString删除时自定义填充方法

完整实体示例

@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自动填充当前时间戳
DEFAULTJava 类型默认值
IGNORE不自动填充
Last Updated:
Contributors: qlopc-tbk@zocell.com
Next
常见问题