## 版本与环境 - 受影响提交:`369cf94`(当前代码生成依赖链) - 运行时:Windows,Python 3.10+,Mustache 代码生成 - 模板:`Default/mapper.mustache` - 安装方式:仓库 `.venv` / `PYTHONPATH=src` ## 问题与预期行为 `Default/mapper.mustache` 使用 `{{#primaryKey.isAutoIncrement}}` 判断是否为自增主键,并据此输出 MyBatis `keyProperty` 与 `useGeneratedKeys`。`TemplateContextBuilder._build_primary_key_context()` 当前只返回名称、类型、JDBC 类型和注释,没有返回 `isAutoIncrement`,因此即使 `ColumnInfo.auto_increment=True`,生成的 mapper 也不会声明回填数据库生成的主键。 预期行为:主键上下文应携带与列上下文一致的 `isAutoIncrement`/`autoIncrement` 标记;自增主键模板输出保持开启,非自增主键保持关闭。 ## 最小复现 ```text PYTHONPATH=src python -c "from dbjavagenix.core.models import ColumnInfo,TableInfo; from dbjavagenix.generator.template_context import TemplateContextBuilder; t=TableInfo(name='account',schema='public',columns=[ColumnInfo(name='id',data_type='BIGINT',java_type='Long',primary_key=True,auto_increment=True)]); print(TemplateContextBuilder().build_context(t)['primaryKey'])" ``` 修复前输出的 `primaryKey` 字典不包含 `isAutoIncrement`;渲染 `Default/mapper.mustache` 时对应 Mustache section 不会展开。 ## 验收标准 - [ ] 自增主键的 `primaryKey` 上下文同时返回 `isAutoIncrement=True` 和 `autoIncrement=True`。 - [ ] 非自增主键返回两个标记为 `False`。 - [ ] `Default/mapper.mustache` 对自增主键输出 `useGeneratedKeys`,非自增主键不输出。 - [ ] 现有完整单元测试和 Ruff 检查通过。 ## 非目标、风险与安全 本 Issue 不改变数据库 introspection、SQL、模板输入 schema、主键类型映射或复合主键策略,不连接真实数据库,也不涉及凭据。风险仅为修复此前遗漏的模板分支;可通过回滚关联提交恢复旧输出。
Activity
ZhaoXingPeng commentedon Sep 9, 2026
已由 PR #170 合并并进入 main,当前交付项完成,关闭本 Issue。