Skip to content

JDL增强

BegCode在JHipster的基础上,对JDL的注解进行了增强,主要体现在以下几个方面。

1. 从注释中提取标题等关键字,省去后期修改

1.1 直接提取实体注释为列或表单项的标题

md
/\*\*

- 角色
  _/
  @importData
  @importDataFile(jhi_authority-rel_jhi_authority\_\_view_permissions)
  @skipFakeData
  @addCustomMethod(repository-service-queryService-updateComponent)
  @moduleName(system)
  @skipWebsite
  entity Authority (jhi_authority) {
  @importDataField
  name String /\*\* 角色名称 _/
  @importDataField
  code String /** 角色代号 \*/
  @importDataField
  info String /** 信息 _/
  @importDataField
  @sortField(asc)
  order Integer /\*\* 排序 _/
  @importDataField
  display Boolean /\*_ 展示 _/
  }

本示例中角色角色名称等,既是注释内容,又提取为相关的标题。

JAVA代码:

java
/**
 * 角色
 */
@TableName(value = "jhi_authority")
@org.springframework.data.elasticsearch.annotations.Document(indexName = "authority")
@Getter
@Setter
@RequiredArgsConstructor
@ToString
@SuppressWarnings("common-java:DuplicatedBlocks")
public class Authority implements Serializable {

  private static final long serialVersionUID = 1L;

  @TableId(value = "id", type = IdType.AUTO)
  @TableField(value = "id")
  private Long id;

  /**
   * 角色名称
   */
  @TableField(value = "name")
  @org.springframework.data.elasticsearch.annotations.Field(type = org.springframework.data.elasticsearch.annotations.FieldType.Text)
  private String name;
}

数据库配置:

xml
<changeSet id="20231208055201-1" author="begcode">
    <createTable tableName="jhi_authority" remarks="角色">
        <column name="id" type="bigint" autoIncrement="true" startWith="1500">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="name" type="varchar(255)" remarks="角色名称">
            <constraints nullable="true" />
        </column>
        <column name="code" type="varchar(255)" remarks="角色代号">
            <constraints nullable="true" />
        </column>
    </createTable>
</changeSet>

前端配置:

typescript
const columns = (): VxeGridPropTypes.Columns => {
  return [
    {
      fixed: 'left',
      type: 'checkbox',
      width: 60,
    },
    {
      title: 'ID',
      field: 'id',
      minWidth: 80,
      visible: false,
      treeNode: false,
      params: { type: 'LONG' },
      editRender: { name: 'AInputNumber', enabled: false },
    },
    {
      title: '角色名称',
      field: 'name',
      minWidth: 160,
      visible: true,
      treeNode: true,
      params: { type: 'STRING' },
      editRender: { name: 'AInput', enabled: false },
    },
    {
      title: '角色代号',
      field: 'code',
      minWidth: 160,
      visible: true,
      treeNode: false,
      params: { type: 'STRING' },
      editRender: { name: 'AInput', enabled: false },
    },
  ];
};

前端效果:

authority-comment.png

1.2 如果遇到注释较多怎么办?

如果需要说明的内容比较多,涉及两种方式。 第一种,简单标题然后换行,BegCode只取第1行内容。 第二种,全在一行的情况下,根据符号和长度截取。 所以写注释也要有一点技巧!

示例:

md
    /**
     * 权限代码
     * (ROLE_开头)
     */
    @importDataField
    code String required