Files
mp-java/docs/TEMPLATE_FIXES.md
赵忠林 eac1102eb1 feat(generator): 优化模板生成逻辑并添加新功能
- 改进 index.tsx 模板,增加智能字段检测和条件性功能生成
- 修复字段注释为空时模板渲染失败的问题
- 添加自动更新 app.config.ts 页面路径的功能
- 新增 ShopArticle相关的实体、Mapper、Service 等代码
- 优化 add.tsx 和 add.config.ts模板,提高用户体验
2025-08-13 00:31:51 +08:00

2.6 KiB
Raw Permalink Blame History

模板修复说明

🔧 修复的问题

1. 字段注释为空的问题

问题描述

  • 当数据库表的字段没有注释时,模板渲染会失败
  • 错误信息:field.comment为空

修复内容

add.tsx.btl 模板

  • 修复前${field.comment!} - 注释为空时显示空字符串
  • 修复后${field.comment!'字段'} - 注释为空时显示默认值

具体修改:

// 标签显示
label="${field.comment!field.propertyName}"

// 输入框提示
placeholder="请输入${field.comment!'字段'}"
placeholder="请输入${field.comment!'内容'}"

// 条件判断
<% if(field.propertyType == 'String' && field.comment?? && (field.comment?contains('描述') || field.comment?contains('备注') || field.comment?contains('内容'))){ %>

配置文件模板

  • index.config.ts.btl'${table.comment!'数据'}管理'
  • add.config.ts.btl'新增${table.comment!'数据'}'

2. 智能 userId 字段检测

问题描述

  • 所有表都生成设置 userId 的代码,即使表中没有 user_id 字段

修复内容

controller.java.btl 模板

添加了字段检测逻辑:

<% var hasUserIdField = false; %>
<% for(field in table.fields){ %>
<% if(field.propertyName == 'userId'){ %>
<% hasUserIdField = true; %>
<% } %>
<% } %>
<% if(hasUserIdField){ %>
// 记录当前登录用户id
User loginUser = getLoginUser();
if (loginUser != null) {
 ${table.entityPath}.setUserId(loginUser.getUserId());
}
<% } %>

修复效果

1. 空注释处理

  • 有注释的字段:正常显示字段注释
  • 无注释的字段:显示字段名或默认提示文本
  • 空表注释:显示"数据"作为默认值

2. 智能 userId 处理

  • 有 user_id 字段的表生成完整的用户ID设置代码
  • 无 user_id 字段的表不生成用户ID相关代码

🎯 Beetl 模板语法说明

空值处理

  • ${field.comment!} - 为空时显示空字符串
  • ${field.comment!'默认值'} - 为空时显示默认值
  • ${field.comment!field.propertyName} - 为空时显示字段名

条件判断

  • field.comment?? - 检查字段是否不为null
  • field.comment?contains('文本') - 检查字段是否包含指定文本

变量定义

  • <% var hasUserIdField = false; %> - 定义布尔变量
  • <% if(hasUserIdField){ %> - 条件判断

🚀 使用建议

  1. 数据库设计:建议为表和字段添加有意义的注释
  2. 模板测试:生成代码前先测试模板在各种数据情况下的表现
  3. 错误处理:模板中添加适当的默认值和空值处理

现在模板更加健壮,能够处理各种边界情况!