# ORM实体父类

# 概述

这个公共实体类是一个基类,用于定义其他实体对象的基本属性。它包含了唯一ID号、字段属性、添加时间、删除时间、状态、更新时间、操作员ID等属性。 该类的作用是为其他实体类提供统一的属性定义和访问方法,促进代码的复用和统一性,简化实体类的开发过程。

通过继承该基类,其他实体类可以直接拥有这些基本属性,并可以方便地进行属性访问和操作。这样可以提高代码的可读性、可维护性和开发效率,同时确保数据的一致性和完整性。

# 你将获取

  • 分布式框架与微服务框架结合的实施方法
  • 合适的身份验证机制的选择与配置

# 集成方式

平台当中已经默认以BaseEntity类为基础类,结合mybatis-plus框架。

# 公共字段

公共字段包括基础默认的实体字段

类名: com.alinesno.infra.common.facade.mapper.entity.BaseEntity,字段如下:

@TableId(type = IdType.ASSIGN_ID)
private Long id; // 唯一ID号

@TableField
private String fieldProp; // 字段属性

/* 更新时间 用户可以点击更新,保存最新更新的时间 **/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date addTime; // 添加时间

/* @Excel(name = "删除时间" , format = "yyyy-MM-dd HH:mm:ss", width = 25) */
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField
private Date deleteTime; // 删除时间

@TableField(fill = FieldFill.INSERT)
private int hasStatus; // = HasStatusEnums.LEGAL.value ; // 状态(0启用|1禁用)

@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.UPDATE, updateStrategy = FieldStrategy.IGNORED)
private Date updateTime; // 更新时间

@TableField
private Long operatorId; // 操作员 用户权限: 只能看到自己操作的数据

@TableField
private Long lastUpdateOperatorId; // 最后更新操作员 用户权限: 只能看到自己操作的数据

这里默认包含平台字段,主要是针对于平台的,非平台的可不用承接:

类名: com.alinesno.infra.common.facade.mapper.entity.InfraBaseEntity,字段如下:

@TableField()
private int hasDelete = HasDeleteEnums.LEGAL.value; // 是否删除(1删除|0正常|null正常)

@TableField
private String deleteManager; // 删除的人

//////////////////////////////// 数据权限规划 _start ///////////////////////
@TableField
private Long applicationId; // 所属应用 应用权限: 只能看到所属应用的权限【默认】

@TableField
private String applicationName; // 应用名称,唯一性,用于做应用标识【最好与springboot的applicaiotn.name对应】

@TableField
private String tenantId = "0"; // 所属租户 , 租户权限

@TableField
private String fieldId; // 字段权限:部分字段权限无法加密或者不显示,或者大于某个值

@TableField
private String departmentId; // 部门权限: 只能看到自己所在部门的数据
/////////////////////////////// 数据权限规划 _end ///////////////////////

# 对应SQL

默认公共字段SQL如下:

`id` BIGINT COMMENT '唯一ID号',
`add_time` DATETIME COMMENT '添加时间',
`delete_time` DATETIME COMMENT '删除时间',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`has_status` INT COMMENT '状态(0启用|1禁用)',
`operator_id` BIGINT COMMENT '操作员 用户权限: 只能看到自己操作的数据',
`field_prop` VARCHAR(255) COMMENT '字段属性',
`last_update_operator_id` BIGINT COMMENT '最后更新操作员 用户权限: 只能看到自己操作的数据',

平台字段SQL如下:

`has_delete` INT COMMENT '是否删除(1删除|0正常|null正常)',
`delete_manager` BIGINT COMMENT '删除的人',
`application_id` BIGINT COMMENT '所属应用 应用权限: 只能看到所属应用的权限【默认】',
`application_name` VARCHAR(64) COMMENT '应用名称,唯一性,用于做应用标识【最好与springboot的application.name对应】',
`tenant_id` BIGINT COMMENT '所属租户 , 租户权限',
`field_id` VARCHAR(255) COMMENT '字段权限:部分字段权限无法加密或者不显示,或者大于某个值',
`department_id` BIGINT COMMENT '部门权限: 只能看到自己所在部门的数据',
`id` BIGINT COMMENT '唯一ID号',
`field_prop` VARCHAR(255) COMMENT '字段属性',
`add_time` DATETIME COMMENT '添加时间',
`delete_time` DATETIME COMMENT '删除时间',
`has_status` INT COMMENT '状态(0启用|1禁用)',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`operator_id` BIGINT COMMENT '操作员 用户权限: 只能看到自己操作的数据',
`last_update_operator_id` BIGINT COMMENT '最后更新操作员 用户权限: 只能看到自己操作的数据',

# 注意事项

根据业务性也可以自定义基础实体类对象,这里只是包括公共的基础字段,此类位于common-facade包中。

# 术语和缩略语

  • 分布式框架: 一种用于构建分布式系统的框架,通过将系统拆分为多个独立的模块来实现高可用性和可伸缩性。
  • 微服务框架: 一种架构风格,将系统拆分为一组小型服务,每个服务都可以独立部署、扩展和维护。
  • 身份验证机制: 用于验证用户身份的方法或技术。

# 其它