Skip to content

🐛 fix(codegen): 补齐自增主键模板上下文标记 #171

Description

@ZhaoXingPeng

版本与环境

  • 受影响提交: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 标记;自增主键模板输出保持开启,非自增主键保持关闭。

最小复现

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions