Jhipster 创建实体总结

Creating an entity

单个实体

对于每个实体,需要:

  • 一个数据库表
  • 一个 Liquibase 更改集(change set)
  • 一个 JPA 实体(Entity)
  • 一个 Spring Data JPA 资源库(Repository)
  • 一个 Spring MVC REST 控制器(Controller), 它具有基本的 CRUD 操作
  • 一个 Angular 路由器(router), 一个组件(component)以及一个服务(service)
  • 一个 HTML 视图(view)
  • 集成测试, 确保一切按预期运行
  • 性能测试,看看一切是否流畅运行

多个实体

多个实体,您可能希望在它们之间建立关系。为此,您需要:

  • 一个数据库外键(foreign key)
  • 用于管理此关系的特定 JavaScript 和 HTML 代码

command-line 创建实体

jhipster entity <entityName> --[options] 来调用子生成器。可以通过键入

yo jhipster:entity --help 参考可使用的选项。

Usage:
yo jhipster:entity [options]

Options:
-h, --help # Print the generator’s options and usage

Arguments:
name # Entity name Type: String Required: true

  1. 通过命令 yo jhipster:entity book 创建实体book

    按照提示进行操作。会涉及步骤为 实体字段及校验、实体关联关系、业务逻辑中分离service class、数据对象的转换对象DTO、数据的查询、实体的分页

  2. 第一步运行完在changelog目录下会生成 _added_entity_Book.xml、_added_entity_constraints_Book.xml两个文件,同时注意在master.xml文件中会自动添加这两个配置文件,这样就不用手动配置了

  3. 启动项目,启动时系统会自动加载执行这个配置文件更新数据库添加实体及其关系

通过jdl 图行工具创建实体

  1. JHipster UML, 它允许您使用UML编辑器.
  2. JDL Studio, 我们的在线工具,使用我们的特定领域语言创建实体和关系 JDL.
  • 如果您不想重新生成实体,则在导入 JDL 时,可以使用 --json-only 标志跳过实体创建部分,并仅在 .jhipster 文件夹中生成 json 文件。
jhipster import-jdl ./my-jdl-file.jdl --json-only
  • 默认情况下,import-jdl 仅重新生成已更改的实体,如果需要重新生成所有的实体,则传递 --force 标志。请注意,这将覆盖对实体文件的所有本地更改。
jhipster import-jdl ./my-jdl-file.jdl --force

3.JHipster UML 工具

更新现有实体

实体配置保存在 .jhipster 目录中的特定 .json 文件中。因此,如果使用现有实体名称再次运行子生成器,则可以更新或重新生成现有实体。

通过2个命令更新现有实体。

  1. ​ yo jhipster:entity 实体名称 此名称与现有名称相同 ,适合
  2. jhipster import-jdl ./my-jdl-file.jdl 使用默认情况,重新生成已更改的实体,适合在没有实体的情况下

第一种会提示 需要增加还是删除、重新生成、第二种直接重新生成

2.先生成changelog 文件
mvnw liquibase:diff
3.将生成的文件添加到mater.xml 文件中
4.执行更新命令
mvn liquibase:updateSQL

changelog.xml中changeSet 几种写法
添加字段
<!--注意,这个id必须为当前时间的值,格式为:yyyyMMddHHmmss,否则启动会报错-->
<changeSet id="2018041320" author="hellxz">  
        <addColumn tableName="clazz">
            <column name="clazz_test" type="varchar(50)"/>
        </addColumn>
    </changeSet>
修改字段类型
<changeSet author="sunxingba (generated)" id="1565769746773-1">
        <modifyDataType  tableName="BLOOD_PRESSURE" columnName="weight_no" newDataType="varchar(255)"  />
    </changeSet>
 修改字段名称   
 <changeSet id="201804131020" author="hellxz">
        <renameColumn tableName="clazz" oldColumnName="class_no" newColumnName="class_id"/>
    </changeSet>
 删除字段  
 <changeSet author="sunxingba (generated)" id="1565760978930-3">
        <dropColumn columnName="WEIGHT_2" tableName="BLOOD_PRESSURE"/>
    </changeSet>
第一种修改实体字段方式
  1. 执行yo jhipster:entity 实体名称 添加删除实体字段 不会生成changeLog 文件,但是前端、后端代码中有关字段都会更新
  2. 执行 mvnw liquibase:diff 生成changelog文件
  3. 将生成的文件添加到master.xml文件中
  4. 重启服务 这样数据库和
第二种修改实体字段方式
  1. 修改.jhipster目录下的实体json 文件如:BloodPressure.json 将字段类型String->Integer

    "fields": [
             {
                "fieldName": "weightNo",
                "fieldType": "Integer"
            }
        ]
        
        改为
        "fields": [
             {
                "fieldName": "weightNo",
                "fieldType": "String"
            }
        ]
    
  2. yo jhipster:entity BloodPressure 提示选项中->选择重新生成实体

  3. 执行 mvnw liquibase:diff 生成changelog 文件 【执行此命令时须停止运行服务】

    生成为20190814080212_changelog.xml ,前缀为时间的文件后 将前两个changeSet 注释后添加 一个刚才修改类型的changeSet

    <?xml version="1.1" encoding="UTF-8" standalone="no"?>
    <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
        <!-- <changeSet author="sunxingba (generated)" id="1565769746773-1">
            <dropUniqueConstraint constraintName="UC_JHI_USEREMAIL_COL" tableName="jhi_user"/>
            <addUniqueConstraint columnNames="email" constraintName="UC_JHI_USEREMAIL_COL" tableName="jhi_user"/>
        </changeSet>
        <changeSet author="sunxingba (generated)" id="1565769746773-2">
            <dropUniqueConstraint constraintName="UC_JHI_USERLOGIN_COL" tableName="jhi_user"/>
            <addUniqueConstraint columnNames="login" constraintName="UC_JHI_USERLOGIN_COL" tableName="jhi_user"/>
        </changeSet> -->
     	<!-- 此次为修改的字段类型-->   
         <changeSet author="sunxingba (generated)" id="1565769746773-1">
            <modifyDataType  tableName="BLOOD_PRESSURE" columnName="weight_no" newDataType="String"  />
        </changeSet>
    </databaseChangeLog>
    
    
  4. 将刚才修改的changelog文件添加到liquibase下的master.xml文件中

    <include file="config/liquibase/changelog/20190814080212_changelog.xml" relativeToChangelogFile="false"/>
    

    注意:这个文件中之前用过的文件配置可以注释掉,否则在程序启动时执行会出错,因为重复执行,如表已经存在

  5. 重新启动服务 ,在启动服务时,程序会自动执行changelog的改变设置

第三种修改domain下实体的属性

​ 与第二种方法类似

  1. 修改domain下jap实体,给实体添加字段及get/set/tostring方法
  2. 执行 mvnw liquibase:diff 生成changelog文件
  3. 将生成的changelog文件添加到master.xml 文件中
  4. 启动项目会自动执行更新数据库添加字段

**注意:**这种情况下修改的实体 可以修改domain 下的实体book 的字段及数据库字段 ,不会修改前端代码、后端逻辑代码、mapstruct、测试用例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值