Infra:配置、代码生成与示例对象
参数与数据源配置
核验日期:2026-09-18。证据级别:当前源码静态核验 + 测试环境统一只读元数据采集。
物理类型、可空性、默认值、完整索引及约束见 MySQL 实测字典;源码与实库差异见 infra 总览。
infra_config 保存应用参数;infra_data_source_config 保存代码生成器等功能使用的连接描述,不代表微服务启动时 Nacos dynamic-datasource 的全部配置。
返回 infra 总览。以下列名为 MyBatis 映射或显式 SQL 预期,类型栏是 Java 类型,不推断数据库长度、默认值及可空性;所有 BaseDO 子类均包含总览所列五个继承字段。
业务流程与读写职责
参数维护人员创建或更新配置时,ConfigServiceImpl:32/44 校验 configKey,再保存 infra_config;其他模块通过配置 API 按键读取。category/name 供管理端分类展示,config_key 提供程序入口,visible 控制前端读取资格。DataSourceConfig 连接用于选库导入元数据,与应用启动数据源配置分离。
关系与存储规则
infra_config.config_key由 ConfigMapper.selectByKey 查询(ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java:13);键唯一性需以实际索引确认,不能把 selectOne 当 唯一约束。infra_data_source_config.password使用 EncryptTypeHandler,文档只记录字段定义;url/username/password的实际内容不采集。infra_config.visible控制前端可见性,不改变列是否落库。配置键是跨微服务 API 的逻辑引用,不是外键。
infra_config
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java:28。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | 参数主键 | 28 |
category | category: String | 参数分类 | 32 |
name | name: String | 参数名称 | 36 |
config_key | configKey: String | 参数键名 支持多 DB 类型时,无法直接使用 key + @TableField("config_key") 来实现转换,原因是 "config_key" AS key 而存在报错 | 42 |
value | value: String | 参数键值 | 46 |
type | type: Integer | 参数类型 枚举 ConfigTypeEnum | 52 |
visible | visible: Boolean | 是否可见 不可见 的参数,一般是敏感参数,前端不可获取 | 58 |
remark | remark: String | 备注 | 62 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
infra_data_source_config
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/db/DataSourceConfigDO.java:28。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | 主键编号 | 28 |
name | name: String | 连接名 | 32 |
url | url: String | 数据源连接 | 37 |
username | username: String | 用户名 | 41 |
password | password: String | 密码;EncryptTypeHandler 加密映射,禁止记录实际值 | 46 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
本次实测对照
infra_config:13 列,源码字段全部存在,无额外物理列。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。infra_data_source_config:10 列,源码字段全部存在,无额外物理列。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。
代码生成元数据
核验日期:2026-09-18。证据级别:当前源码静态核验 + 测试环境统一只读元数据采集。
物理类型、可空性、默认值、完整索引及约束见 MySQL 实测字典;源码与实库差异见 infra 总览。
两张表保存生成器导入的业务表及字段描述。column_name/data_type/nullable/primary_key 是被描述对象的属性,不是 infra_codegen_column 自身的 DDL。
返回 infra 总览。以下列名为 MyBatis 映射或显式 SQL 预期,类型栏是 Java 类型,不推断数据库长度、默认值及可空性;所有 BaseDO 子类均包含总览所列五个继承字段。
业务流程与读写职责
开发人员选数据源导入目标表,CodegenServiceImpl:68/97/105 分别写 table 与 column 元数据;随后调整 Java/前端生成选项,generationCodes:250 读取两层配置生成代码。syncCodegenFromDB:155 对照真实目标表同步列;deleteCodegen:217 同时删除表描述和关联列。数据库原始描述与人工生成选项分别服务元数据同步和代码输出,不能当作实际 DDL。
关系与存储规则
infra_codegen_column.table_id → infra_codegen_table.id,表/列通过生成器服务维护;删除列的 Mapper 为ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java:19。infra_codegen_table.data_source_config_id → infra_data_source_config.id;parent_menu_id → system_menu.id为跨服务逻辑关联。master_table_id自关联;sub_join_column_id/tree_parent_column_id/tree_name_column_id引用生成器列 ID;sub_join_many区分一对多和一对一。dict_type按字典类型字符串逻辑关联 system 字典;table_name仅表示导入目标,不将被导入业务表归 infra 所有。CodegenTableMapper.java:15以 table_name 与 data_source_config_id 查重;是否存在相应唯一索引以实库元数据为准。
infra_codegen_column
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/codegen/CodegenColumnDO.java:30。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | ID 编号 | 30 |
table_id | tableId: Long | 表编号 关联 CodegenTableDO#getId() | 36 |
column_name | columnName: String | 字段名 关联 TableField#getName() | 45 |
data_type | dataType: String | 数据库字段类型 关联 TableField.MetaInfo#getJdbcType() | 51 |
column_comment | columnComment: String | 字段描述 关联 TableField#getComment() | 57 |
nullable | nullable: Boolean | 是否允许为空 关联 TableField.MetaInfo#isNullable() | 63 |
primary_key | primaryKey: Boolean | 是否主键 关联 TableField#isKeyFlag() | 69 |
ordinal_position | ordinalPosition: Integer | 排序 | 73 |
java_type | javaType: String | Java 属性类型 例如说 String、Boolean 等等 关联 TableField#getColumnType() | 84 |
java_field | javaField: String | Java 属性名 关联 TableField#getPropertyName() | 90 |
dict_type | dictType: String | 字典类型 关联 DictTypeDO 的 type 属性 | 96 |
example | example: String | 数据示例,主要用于生成 Swagger 注解的 example 字段 | 100 |
create_operation | createOperation: Boolean | 是否为 Create 创建操作的字段 | 107 |
update_operation | updateOperation: Boolean | 是否为 Update 更新操作的字段 | 111 |
list_operation | listOperation: Boolean | 是否为 List 查询操作的字段 | 115 |
list_operation_condition | listOperationCondition: String | List 查询操作的条件类型 枚举 CodegenColumnListConditionEnum | 121 |
list_operation_result | listOperationResult: Boolean | 是否为 List 查询操作的返回字段 | 125 |
html_type | htmlType: String | 显示类型 枚举 CodegenColumnHtmlTypeEnum | 134 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
infra_codegen_table
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/codegen/CodegenTableDO.java:32。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | ID 编号 | 32 |
data_source_config_id | dataSourceConfigId: Long | 数据源编号 关联 DataSourceConfigDO#getId() | 39 |
scene | scene: Integer | 生成场景 枚举 CodegenSceneEnum | 45 |
table_name | tableName: String | 表名称 关联 TableInfo#getName() | 54 |
table_comment | tableComment: String | 表描述 关联 TableInfo#getComment() | 60 |
remark | remark: String | 备注 | 64 |
module_name | moduleName: String | 模块名,即一级目录 例如说,system、infra、tool 等等 | 73 |
business_name | businessName: String | 业务名,即二级目录 例如说,user、permission、dict 等等 | 79 |
class_name | className: String | 类名称(首字母大写) 例如说,SysUser、SysMenu、SysDictData 等等 | 85 |
class_comment | classComment: String | 类描述 | 89 |
author | author: String | 作者 | 93 |
template_type | templateType: Integer | 模板类型 枚举 CodegenTemplateTypeEnum | 102 |
front_type | frontType: Integer | 代码生成的前端类型 枚举 CodegenFrontTypeEnum | 108 |
parent_menu_id | parentMenuId: Long | 父菜单编号 关联 MenuDO 的 id 属性 | 117 |
master_table_id | masterTableId: Long | 主表的编号 关联 CodegenTableDO#getId() | 126 |
sub_join_column_id | subJoinColumnId: Long | 【自己】子表关联主表的字段编号 关联 CodegenColumnDO#getId() | 132 |
sub_join_many | subJoinMany: Boolean | 主表与子表是否一对多 true:一对多 false:一对一 | 139 |
tree_parent_column_id | treeParentColumnId: Long | 树表的父字段编号 关联 CodegenColumnDO#getId() | 148 |
tree_name_column_id | treeNameColumnId: Long | 树表的名字字段编号 名字的用途:新增或修改时,select 框展示的字段 关联 CodegenColumnDO#getId() | 156 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
本次实测对照
infra_codegen_column:23 列,源码字段全部存在,无额外物理列。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。infra_codegen_table:24 列,源码字段全部存在,无额外物理列。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。
代码生成演示表
核验日期:2026-09-18。证据级别:当前源码静态核验 + 测试环境统一只读元数据采集。
物理类型、可空性、默认值、完整索引及约束见 MySQL 实测字典;源码与实库差异见 infra 总览。
这五张表具有正式 Mapper/Service 源码,因此列入完整源码清单;是否部署到当前库另行核对,不能因目录名 demo 就漏掉,也不能据源码断言线上启用。
返回 infra 总览。以下列名为 MyBatis 映射或显式 SQL 预期,类型栏是 Java 类型,不推断数据库长度、默认值及可空性;所有 BaseDO 子类均包含总览所列五个继承字段。
业务流程与读写职责
演示页面分别展示单表联系人、树形分类和学生主子表三种生成模式。联系人独立 CRUD;分类按 parent_id 维护层级;学生为主记录,课程为列表子项,班级按 student_id 查单项。这些关系用于说明生成器支持的业务形态,不是实际设备、租户成员或学校生产业务。测试库五表存在不代表演示页面已启用。
关系与存储规则
yudao_demo02_category.parent_id → yudao_demo02_category.id为树形自关联;父级与名字查重方法在ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/demo/demo02/Demo02CategoryMapper.java:27。yudao_demo03_course.student_id → yudao_demo03_student.id(课程列表);yudao_demo03_grade.student_id → yudao_demo03_student.id(班级信息),对应查询/删除见 Demo03CourseMapper:26/30、Demo03GradeMapper:24/28。- 演示联系人/学生 sex 引用 system_user_sex 字典语义;这里不是 system 管理员表,也不应与真实账号主键合并。
- 演示 DO 没有声明 SQL 外键或二级索引;Java 单条查询不足以证明数据库一对一唯一约束。
yudao_demo01_contact
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo01/Demo01ContactDO.java:30。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | 编号 | 30 |
name | name: String | 名字 | 34 |
sex | sex: Integer | 性别 枚举 system_user_sex 对应的类 | 40 |
birthday | birthday: LocalDateTime | 出生年 | 44 |
description | description: String | 简介 | 48 |
avatar | avatar: String | 头像 | 52 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
yudao_demo02_category
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo02/Demo02CategoryDO.java:30。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | 编号 | 30 |
name | name: String | 名字 | 34 |
parent_id | parentId: Long | 父级编号 | 38 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
yudao_demo03_course
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03CourseDO.java:28。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | 编号 | 28 |
student_id | studentId: Long | 学生编号 | 32 |
name | name: String | 名字 | 36 |
score | score: Integer | 分数 | 40 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
yudao_demo03_grade
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03GradeDO.java:28。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | 编号 | 28 |
student_id | studentId: Long | 学生编号 | 32 |
name | name: String | 名字 | 36 |
teacher | teacher: String | 班主任 | 40 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
yudao_demo03_student
源码:ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03StudentDO.java:30。
继承:BaseDO(五个审计/软删除字段见下表末尾)。主键候选为 id(实体主键注解或 MyBatis 约定);二级索引、唯一性和物理外键以实际结构核对,不由字段名推定。
| 预期列名 | Java 属性 / 类型 | 业务含义与映射 | 源码行 |
|---|---|---|---|
id | id: Long | 编号 | 30 |
name | name: String | 名字 | 34 |
sex | sex: Integer | 性别 枚举 system_user_sex 对应的类 | 40 |
birthday | birthday: LocalDateTime | 出生日期 | 44 |
description | description: String | 简介 | 48 |
create_time | createTime: LocalDateTime | 创建时间,INSERT 自动填充 | BaseDO:30 |
update_time | updateTime: LocalDateTime | 修改时间,INSERT_UPDATE 自动填充 | BaseDO:35 |
creator | creator: String | 创建者标识,VARCHAR 映射 | BaseDO:42 |
updater | updater: String | 更新者标识,VARCHAR 映射 | BaseDO:49 |
deleted | deleted: Boolean | 逻辑删除字段 | BaseDO:54 |
本次实测对照
yudao_demo01_contact:12 列,源码字段全部存在;额外物理列tenant_id。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。yudao_demo02_category:9 列,源码字段全部存在;额外物理列tenant_id。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。yudao_demo03_course:10 列,源码字段全部存在;额外物理列tenant_id。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。yudao_demo03_grade:10 列,源码字段全部存在;额外物理列tenant_id。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。yudao_demo03_student:11 列,源码字段全部存在;额外物理列tenant_id。索引:PRIMARY(id)唯一。物理外键:本次元数据未返回。