当前位置: 首页 > news >正文

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 generator-jhipster@6.0.0
//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个字段即可。

http://www.lryc.cn/news/8103.html

相关文章:

  • LeetCode 82. 删除排序链表中的重复元素 II
  • tensorflow gpu环境安装
  • 如何在现实场景中随心放置AR虚拟对象?
  • 操作系统-处理机调度
  • 手机截图如何提取文字?
  • vue中复制内容
  • MySQL CAST()函数用法
  • 【测试工程师面试】详细记录 自己的一次面试
  • Elasticsearch 安装(二)
  • Java基础:异常与错误(ExceptionError)
  • VAmPI:一个包含了OWASP Top10漏洞的REST API安全学习平台
  • springboot(6)之前端传递参数的方式 普通 集合 数组
  • redis分布式锁的演变过程
  • leaflet 修改popup的样式,个性化弹窗(069)
  • 注解ConfigurationProperties、EnableConfigurationProperties的用法
  • 自适应布局之淘宝无限适配+rem+微信rpx自适应
  • esxi不能识别不兼容网卡解决方案
  • Sizeof与Strlen的区别与联系
  • 力扣(LeetCode)413. 等差数列划分(2023.02.15)
  • 蓝桥杯刷题——基础篇(一)
  • Java基础知识快速盘点(三)
  • vscode编程小插件之Doxygen和Better Align
  • 指 针
  • 安卓小游戏:俄罗斯方块
  • NC113 验证IP地址
  • 珠宝企业如何利用私域实现业绩增长?
  • 回收站清空了还能找回来吗?回收站恢复的4个方法(最全)
  • 深度解析React性能优化API
  • 算法刷题打卡第91天:统计一个圆中点的数目
  • sentinel持久化方案