跳到主要内容

公共映射与框架边界

公共框架决定“实体字段怎样变成查询与写入”,但并不因此拥有各业务表。理解这些规则,有助于区分正常的框架行为和真正的结构缺口。

审计字段、逻辑删除与租户​

BaseDO 提供 createTime、updateTime、creator、updater、deleted。时间和操作者由字段填充处理器参与写入;deleted 使用 @TableLogic。这些 Java 声明不能证明数据库列具有相同默认值或非空约束,物理属性须逐表查字典。

TenantBaseDO 在此基础上增加 tenantId。只继承 BaseDO 的实体没有自动继承 Java 属性 tenantId,但测试数据库可能仍有 tenant_id,且租户拦截器可以独立参与 SQL。不能单凭实体未声明租户字段,断言表不受租户控制。

逻辑删除通常保留原有行。唯一索引若不含删除状态,删除后原编码仍可能被占用;例如 report 数据源编码的租户内唯一键。业务文档会说明这种约束对后续重建的影响,不自动修改索引。

证据:ik_project/yudao-cloud/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java:28;yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/db/TenantBaseDO.java:15(后者相对 yudao-framework/)。

字段命名与动态对象​

  • @TableName、@TableField、Mapper 显式 SQL 和动态数据源共同决定访问对象,不能只按 Java 类名生成数据库设计。
  • @TableField(exist = false) 表示辅助属性,不应列成 MySQL 持久列。TDengine 的 tbname 等特殊投影,也要与普通物理列区分。
  • 公共 MyBatis 配置使用线程上下文后缀和配置白名单改写表名。后缀由调用方设置,不能由示例注释推导实际月表名称。
  • ES 嵌套对象、multi-field 和按月索引应从 mapping 与调用处对照;不能将 Java String 简化为一个统一的 ES 字符串类型。

证据:ik_project/yudao-cloud/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/YudaoMybatisAutoConfiguration.java:36,65。

网关与公共基础设施​

本次针对 gateway 和 framework 的持久化注解检索,未发现独立业务 MySQL/ES 实体;网关 Nacos 文件未定义本次采集的数据源绑定。因此不创建一个假想的“网关数据库”。网关令牌校验请求 system 的校验接口,并使用本地缓存;认证数据归 system 业务说明。

网关 RedisConfig 中自定义缓存管理器方法的 @Bean、@Primary 已被注释,不能把这个方法直接写成已经生效的运行事实。公共 Redis、租户、日志等能力按实际调用方与业务归属说明,未扫描线上 Redis key/value。

证据:ik_project/yudao-cloud/yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/filter/security/TokenAuthenticationFilter.java:64,135;config/RedisConfig.java:32(相对同一 gateway Java 包);doc/数据库设计管理/nacos/gateway-server.yaml。

证据等级​

标记含义不能据此断言
实测结构本次连接得到的数据库目录、字段、索引、mapping业务流程已成功运行、生产环境结构相同
源码确认当前检出中的映射、SQL、服务调用、事件处理线上部署了同一版本或配置分支正在启用
配置引用用户提供的 Nacos 文件包含绑定正在运行的进程实际加载了该配置
逻辑关联业务代码使用 ID、标识或消息建立关系数据库存在外键或跨系统事务
未确认归属实库对象存在,但当前模块未发现对应持久化证据对象已废弃、可以删除或归属于同名服务
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答