版本与环境
- 受影响提交:
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 不会展开。
验收标准
非目标、风险与安全
本 Issue 不改变数据库 introspection、SQL、模板输入 schema、主键类型映射或复合主键策略,不连接真实数据库,也不涉及凭据。风险仅为修复此前遗漏的模板分支;可通过回滚关联提交恢复旧输出。
版本与环境
369cf94(当前代码生成依赖链)Default/mapper.mustache.venv/PYTHONPATH=src问题与预期行为
Default/mapper.mustache使用{{#primaryKey.isAutoIncrement}}判断是否为自增主键,并据此输出 MyBatiskeyProperty与useGeneratedKeys。TemplateContextBuilder._build_primary_key_context()当前只返回名称、类型、JDBC 类型和注释,没有返回isAutoIncrement,因此即使ColumnInfo.auto_increment=True,生成的 mapper 也不会声明回填数据库生成的主键。预期行为:主键上下文应携带与列上下文一致的
isAutoIncrement/autoIncrement标记;自增主键模板输出保持开启,非自增主键保持关闭。最小复现
修复前输出的
primaryKey字典不包含isAutoIncrement;渲染Default/mapper.mustache时对应 Mustache section 不会展开。验收标准
primaryKey上下文同时返回isAutoIncrement=True和autoIncrement=True。False。Default/mapper.mustache对自增主键输出useGeneratedKeys,非自增主键不输出。非目标、风险与安全
本 Issue 不改变数据库 introspection、SQL、模板输入 schema、主键类型映射或复合主键策略,不连接真实数据库,也不涉及凭据。风险仅为修复此前遗漏的模板分支;可通过回滚关联提交恢复旧输出。