jhipster自动生成java代码的方法

一、前言

java springboot后台项目用到了jpa查询数据库,还用到了jhipster,这个东西可以自动生成基础的ControllerServiceDaoJavaBean等相关代码,减少重复开发。

在此总结下使用方法。

二、jhipster自动生成java代码的方法

1.需要先安装node,版本与其它同事的保持一致。

2.为了确保jhipster生成的代码与项目框架的版本匹配,可以从其他人的电脑上拷贝一个压缩包,然后解压到自己的C:\Users\myname\AppData\Roaming\npm目录下(myname是自己电脑的用户名),压缩包里包含以下文件:

//文件夹
node_modules
//文件
jhipster
//文件
jhipster.cmd

其中,node_modules文件夹中,有generator-jhipster文件夹,这个里面就是jhipster依赖包。

3.如果不需要第2步,那就可以使用命令:

npm install -g generator-jhipster
//npm install -g [email protected]
//npm uninstall -g generator-jhipster

全局安装jhipster,最终也会下载好generator-jhipster到相应目录。

4.打开java项目,可以在项目文件夹中新建一个.jhipster文件夹,然后在这个文件夹中建一个Mytable.json文件,内容样例如下:

{
    "changelogDate": "20221125234248",
    "databaseType": "sql",
    "dto": "mapstruct",
    "entityTableName": "mytable",
    "fields": [{
        "fieldName": "level",
        "fieldValidateRules": ["required"],
        "fieldType": "Integer",
        "javadoc": "级别"
    }, {
        "fieldName": "name",
        "fieldValidateRulesMaxlength": 50,
        "fieldValidateRules": ["required", "maxlength"],
        "fieldType": "String",
        "javadoc": "名称"
    },  {
        "fieldName": "creator",
        "fieldValidateRulesMaxlength": 20,
        "fieldValidateRules": ["maxlength"],
        "fieldType": "String",
        "javadoc": "创建人"
    }, {
        "fieldName": "createTime",
        "fieldType": "Instant",
        "javadoc": "创建时间"
    }, {
        "fieldName": "updator",
        "fieldValidateRulesMaxlength": 20,
        "fieldValidateRules": ["maxlength"],
        "fieldType": "String",
        "javadoc": "修改人"
    }, {
        "fieldName": "updateTime",
        "fieldType": "Instant",
        "javadoc": "修改日期"
    }, {
        "fieldName": "order",
        "fieldType": "Integer",
        "javadoc": "排序顺序"
    }, {
        "fieldName": "isDel",
        "fieldType": "Integer",
        "javadoc": "是否删除。1是逻辑删除。"
    }],
    "fluentMethods": true,
    "jpaMetamodelFiltering": true,
    "pagination": "pagination",
    "relationships": [],
    "searchEngine": false,
    "service": "serviceClass"
}

5.使用cmd窗口,进入.jhipster文件夹,执行命令:

jhipster entity Mytable

然后会出现一些选项,可以选第一个,然后输入y,操作完毕后,就会在项目中自动创建好相关java文件。

6.自动创建好的java文件中,
com.my.web.rest.MytableResource.java是Controller层的文件;
com.my.service.MytableService.java是Service层文件;
com.my.repository.MytableRepository.java是Dao层文件;
com.my.service.dto.MytableDTO.java是JavaBean文件;
以及还有些其它文件。

7.项目中还用到了liquibase,所以生成的jhipster文件中还有:
项目名\src\main\resources\config\liquibase\master.xml,这个会新增一行include,项目启动会用(如果不用就可以注释那行);
项目名\src\main\resources\config\liquibase\changelog\20221125234248_added_entity_Mytable.xml,这个项目启动时也会用。

8.项目启动时,会读取20221125234248_added_entity_Mytable.xml,然后查询数据库的databasechangelog表(liquibase生成的),如果没有数据、就按照xml文件、新建一个数据库表Mytable
如果有改动没有校验通过,就会报错。(不过不影响项目启动,但是会影响其它xml文件的执行)

三、备注

1.这样建的数据库表,没有默认字段default,好像是目前jhipster不支持默认字段。
在这里插入图片描述

2.如果数据库表改字段导致项目启动校验没有通过,可以:
(1)修改Mytable.json,然后重新自动生成java代码(注意如果覆盖了用到的代码,就自己还原下代码);
(2)备份数据库表,然后给表改个名字;
(3)从databasechangelog中找到校验不通过的那行(项目启动报错会报MD5SUM字段内容,按这个字段搜下),备份后、删除这行。(或者把MD5SUM字段改对也行)
(4)操作完(3)后,启动项目,项目就会再次自动生成表Mytable,就不会报错了。

3.注意jhipster的json里的fieldValidateRulesMaxlengthfieldValidateRules不能乱用:

//        "fieldValidateRulesMaxlength": 11,
//        "fieldValidateRules": ["maxlength"],

如果用错,会导致调用controller层传入参数时,报错:

//这个是本人的level字段用了这2个值后报的错(integer类型)

Resolved exception caused by handler execution: javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.lang.Integer'. Check configuration for 'level'

所以省事点还是不要用这2个字段即可。

猜你喜欢

转载自blog.csdn.net/BHSZZY/article/details/129043242
今日推荐