JHipster 创建实体,并且添加关联关系

当我们创建完应用时,可能想要创建一些实体类。

例如我们想要创建一个User和Role实体类。对于每个实体,我们需要

  • 一个数据库表
  • 一个Liquibase变更set
  • 一个JPA实体
  • 一个Spring data jpa repository
  • 一个带有基础增删改查的rest controller
  • 一个angular路由、组件以及服务
  • 一个HTML视图
  • 集成测试
  • 性能测试

如果我们有多个实体,你可能还想创建他们之间的关系,比如这个例子,你需要:

  • 一个数据库外键
  • 指定Javascript和HTML代码管理此关系

实体sub-generator(子生成器),将会为每个实体创建所有需要的文件并且提供增删改查后端,sub-generator通过

jhipster entity <entityName> --[options]运行。

注意:在Windows中,需要使用如下代码运行:

yo jhipster:entity User --table-name user

它支持的选项有:

  • --table-name <table_name> 通过JHipster会生成一个表,他的名称基于你的实体名称,如果你想要修改为不同的名称使用此选项
  • --angular-suffix <suffix> 如果你想所有的都带有自定义的后缀,可使用此选项
  • --regenerate 将会不做任何询问生成已存在的实体
  • --skip-server 不会服务端代码
  • --skip-client不会生成客户端代码
  • --db 跳过服务端代码生成时指定数据库

实体字段

对于每个实体,你可以添加很多字段。你需要输入字段名称和类型,JHipster将会生成你所需的代码和配置。这些字段名称不能包含关键字

字段类型

JHipster支持很多字段类型,这些支持依赖于你的后台数据库,所有我们使用Java类型去描述他们:一个Java String在Oracle和Cassandra中不同,这是Jhipster生成健壮和正确的数据库代码的一种方式。

  • String 它的默认长度取决于后端,如果你使用JPA默认长度255,你可以通过检验规则来修改它
  • Integer
  • Long
  • Float
  • Double
  • BigDecimal
  • LocalDate 用于在Java中正确的管理日期
  • Instant 用于时间戳
  • ZoneDateTime 给定时区的本地时间
  • Enumeration 枚举对象,当选择此类型时,子生成器将会询问你对应的枚举值并创建enum类
  • Blob 用于存储二进制数据,当被选中时,子生成器会询问你存储的数据类型,是图片对象还是CLOB

下面尝试下如何创建

创建一个Role的实体
yo jhipster:entity Role --table-name rol
要为实体添加字段吗?
Do you want to add a field to your entity? (Y/n) y
字段名称是什么?
 What is the name of your field? name
选择字段类型
What is the type of your field? String
为字段添加一些验证
Do you want to add validation rules to your field? (y/N) y
1、唯一约束
2、最小长度
3、最大长度
4、正则表达
是否继续添加字段
Do you want to add a field to your entity? (Y/n) n
是否关联实体
Do you want to add a relationship to another entity? No
生成DTO(DOT详解)
 Do you want to use a Data Transfer Object (DTO)? [BETA] Yes, generate a DTO with MapStruct
生成Service
Do you want to use separate service class for your business logic?
Yes, generate a separate service interface and implementation
添加分页
Do you want pagination on your entity? Yes, with a simple pager
不分页
简单分页,基于bootstrap pager
完成分页系统,基于Bootstrap pagination component
滚动分页,基于infinite scroll directive

给User和Role添加关联关系

在上面的代码中就可以直接添加关联关系,这里我们演示修改实体,并且添加关联关系。

再次输入
yo jhipster:entity Role --table-name role
你想更新实体吗?这将替换此实体的现有文件,所有自定义代码都将被覆盖
Do you want to update the entity? This will replace the existing files for this entity, all your custom code will be overwritten (Use arrow keys)
Yes, re generate the entity(是的,重新生成实体)
Yes, add more fields and relationships(为实体添加新的字段)
Yes, remove fields and relationships(是的,删除字段和关系)
添加新的字段?
Do you want to add a field to your entity? (Y/n) n
是否关联其他实体
Do you want to add a relationship to another entity? (Y/n) y
实体的名称是什么?
What is the name of the other entity? User
关联关系的名称是什么?
What is the name of the relationship? user
选择关系类型
What is the type of the relationship? (Use arrow keys) many-to-one
  many-to-one
  many-to-many
  one-to-one
展示他们的关系时,使用User的哪个字段
When you display this relationship with Angular, which field from 'User' do you want to use? (id) username
是否要为此关系添加任何验证规则?
Do you want to add any validation rules to this relationship? (y/N) n
是否关联其他实体
Do you want to add a relationship to another entity? (Y/n) n

通过上面的命令,我们新增了Role,并且关联了User,并且为我们提供了后端的增删改查。

原文地址:https://www.zhengjie.me/blog/438.html

猜你喜欢

转载自blog.csdn.net/zj7321/article/details/81586461
今日推荐