Skip to content

[feat] database-ptc-object 容器类型参数关联支持#662

Merged
Bkm016 merged 1 commit intoTabooLib:dev/6.2.3from
FxRayHughes:feat/ptc-object-container-661
Feb 11, 2026
Merged

[feat] database-ptc-object 容器类型参数关联支持#662
Bkm016 merged 1 commit intoTabooLib:dev/6.2.3from
FxRayHughes:feat/ptc-object-container-661

Conversation

@FxRayHughes
Copy link
Contributor

概述

为 database-ptc-object 模块添加容器类型(List/Set/Map)字段的子表存储支持,以及基于代理模式的 Collection Accessor API。

主要改动

容器类型子表支持

  • 数据类中的 List<String>Set<String>Map<String, String> 字段自动创建独立子表存储
  • List 子表通过 sort_order 列保持插入顺序
  • Map 子表使用 map_key + map_value 列存储键值对
  • 支持 SQLite / MySQL / PostgreSQL 三种数据库
  • insert/update/delete 时自动同步子表数据(级联删除)

连接池死锁修复

  • 将读取路径拆分为两阶段:Phase 1 在连接内读 ResultSet 到 Map,Phase 2 释放连接后加载子表数据
  • 解决 maximumPoolSize=1 场景下嵌套获取连接导致的超时死锁

PostgreSQL 列名引用兼容

  • 子表 SQL 中的硬编码反引号(`)改为 asFormattedColumnName() 动态引用

Collection Accessor API

  • 新增 DatabaseMap / DatabaseList / DatabaseSet 代理类,实现标准 MutableMap / MutableList / MutableSet 接口
  • DataMapper 接口新增 mapOf() / listOf() / setOf() 方法,支持按 @id 或 Filter 定位父记录后直接操作子表

修改文件

模块 文件 改动
database-ptc-object AnalyzedClass.kt 新增 hasCollectionMembers / collectionMembers
database-ptc-object AnalyzedClassMember.kt 新增 isList / isSet / isMap / isCollection
database-ptc-object Container.kt 容器接口支持 collectionTableInfos
database-ptc-object ContainerOperatorImpl.kt 两阶段读取 + Accessor 工厂方法 + PG 引用修复
database-ptc-object ContainerSQL.kt MySQL 子表建表
database-ptc-object ContainerSQLite.kt SQLite 子表建表
database-ptc-object ContainerPostgreSQL.kt PostgreSQL 子表建表
database-ptc-object CollectionTableInfo.kt 新建 子表元数据
database-ptc-object CollectionAccessor.kt 新建 三个代理类
database-ptc-object DataMapper.kt 接口新增 6 个方法
database-ptc-object DataMapperImpl.kt 实现 Accessor 委托
database-ptc-object TransactionalDataMapper.kt 实现 Accessor 委托
test CollectionTest.kt 新建 14 个容器测试用例

Closes #661

- 支持 List/Set/Map 字段自动创建子表存储(SQLite/MySQL/PostgreSQL)
- 修复连接池死锁:两阶段读取拆分 ResultSet 读取与子表加载
- 修复 PostgreSQL 列名引用:硬编码反引号改为 asFormattedColumnName()
- 新增 DatabaseMap/DatabaseList/DatabaseSet 代理类,实现标准 MutableCollection 接口
- DataMapper 新增 mapOf/listOf/setOf API,支持按 ID 或 Filter 定位父记录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Bkm016 Bkm016 merged commit 31b14ca into TabooLib:dev/6.2.3 Feb 11, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] database-ptc-object 容器类型参数关联支持

2 participants

Comments