当前位置: 首页 > 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个字段即可。

相关文章:

jhipster自动生成java代码的方法

一、前言 java springboot后台项目用到了jpa查询数据库,还用到了jhipster,这个东西可以自动生成基础的Controller、Service、Dao、JavaBean等相关代码,减少重复开发。 在此总结下使用方法。 二、jhipster自动生成java代码的方法 1.需要先…...

LeetCode 82. 删除排序链表中的重复元素 II

原题链接 难度:middle\color{orange}{middle}middle 题目描述 给定一个已排序的链表的头 headheadhead , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,…...

tensorflow gpu环境安装

查看本电脑支持的最高cuda版本:nvidia-smi在~/.condarc修改conda 源:channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/- https://mirrors.tuna.tsinghua.edu.cn/…...

如何在现实场景中随心放置AR虚拟对象?

随着AR的发展和电子设备的普及,人们在生活中使用AR技术的门槛降低,比如对于不方便测量的物体使用AR测量,方便又准确;遇到陌生的路段使用AR导航,清楚又便捷;网购时拿不准的物品使用AR购物,体验更…...

操作系统-处理机调度

1.处理机调度的概念、层次1.1调度的基本概念制定某种规则来决定处理任务的顺序。1.2调度的三个层次高级调度(作业调度)中级调度(内存调度)进程的挂起态与七状态模型低级调度(进程调度)小结2.进程调度的时机…...

手机截图如何提取文字?

在当今信息爆炸的时代,图文并茂已经成为了一个广告宣传的常用方式。然而,图片中的文字信息往往难以获取,尤其对于那些需要快速获取信息的人们来说,阅读图片中的文字会是一项繁琐且费时的任务。现在,我们有一个好消息要…...

vue中复制内容

vue中复制内容vue2vue-clipboard2依赖项在main.js引入使用vue3vue-clipboard3依赖项引入使用更新于:2023-02-15vue2vue-clipboard2 依赖项 “vue”: “^2.6.11” “vue-clipboard2”: “^0.3.1” 在main.js引入 import VueClipboard from vue-clipboard2 Vue.us…...

MySQL CAST()函数用法

一、语法 expr:源数据,如字符串’China’。type:目标数据类型,例如CHAR。 cast(expr AS type)二、命令说明 将任何类型的值转换为具有指定类型的值。 CAST()函数通常用于返回具有指定类型的值,以便在WHERE&#xff…...

【测试工程师面试】详细记录 自己的一次面试

【测试工程师面试】详细记录 自己的一次面试 目录:导读 Linux基础 Oracle基础 编程基础 测试的基础 面试的问题 扯闲话部分: 10点刚到,先进行笔试,笔试的题目很基础,涉及到linux,涉及到oracle数据库…...

Elasticsearch 安装(二)

目录前言一、Linux 安装1、下载安装包⑴、选择需要的安装包⑵、下载解压到安装目录2、查看解压后目录结构3、启动 Elasticsearch⑴、正常启动流程⑵、启动过程遇到的问题①、启动报错②、创建运行 Elasticsearch 的用户,启动成功,但无法访问③、停止Elas…...

Java基础:异常与错误(ExceptionError)

1 缘起 某天上网冲浪时,偶然看到一个问题,说Java的Error和Exception有什么区别? 一句话:不知道。并不能很清晰地描述出个中区别。 当然,曾经也看过Throwable相关的知识,但是,并没有通过源码及注…...

VAmPI:一个包含了OWASP Top10漏洞的REST API安全学习平台

关于VAmPI VAmPI是一个包含了OWASP Top10漏洞的REST API安全学习平台,该平台基于Flask开发,该工具的主要目的是通过一个易受攻击的API来评估针对API安全检测工具的有效性,并帮助广大研究人员学习和了解API安全。 功能介绍 1、基于OWASP Top…...

springboot(6)之前端传递参数的方式 普通 集合 数组

实体类传递 首先我们在后端定义一个实体类,通过lombok插件重写 有参 无参 get set toString 方法, 然后前端发送数据,后端就会自动收到,然后属性填写 后端代码如下 AllArgsConstructor Data NoArgsConstructor public class role …...

redis分布式锁的演变过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、直接添加Redis缓存二、使用setnx执行抢锁过程三、setnx获取锁+设置过期时间四、引入UUID解决误删锁问题五、引入Lua脚本来做删除六、对递归部分优化进行自旋七、添加自旋次数八、改为重入锁,使…...

leaflet 修改popup的样式,个性化弹窗(069)

第069个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中修改popup组件的样式,个性化弹窗。主要方法是更改css, 中增加custom-popup类名,style的样式要做穿透处理 >>>.具体方法请参考源代码。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实…...

注解ConfigurationProperties、EnableConfigurationProperties的用法

1 ConfigurationProperties ConfigurationProperties主要作用就是将prefix属性指定的前缀配置项的值绑定到这个JavaBean上 ,通过指定的前缀,来绑定配置文件中的配置。这样的好处是将配置数据与JOPO进行转换,能够管理一个类别的所有配置信息&…...

自适应布局之淘宝无限适配+rem+微信rpx自适应

一、自适应布局 所谓前端适配,就是为了让移动设计稿在大部分的移动设备上看起来有一致的展示效果,目前比较流行的方法有两种。一种是强制meta viewport宽度为设计稿宽度,一种是使用rem自适应布局的flexible.js。 二、当前流行的移动端自适应…...

esxi不能识别不兼容网卡解决方案

相信很多网友在安装测试VMWARE Esxi 6.0的时候,总会遇到无法兼容网卡的情况,本人也是遇到了再组装的台式机上测试ESXI 6.0的时候,无法识别REALTEK RTL 8111E的情况。 找了很多网友提供的博客,方法是正确的,但是不够严…...

Sizeof与Strlen的区别与联系

16年写了很多 C 与 C 相关的文章,但是后面从事了 Android 开发,就全部删掉了,无意中发现了这篇由还存在草稿箱,索性就找回来吧,也是追忆当年学习的青葱岁月 Sizeof与Strlen的区别与联系 一、sizeof sizeof(…)是运算…...

力扣(LeetCode)413. 等差数列划分(2023.02.15)

如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。 …...

蓝桥杯刷题——基础篇(一)

这部分题目,主要面向有志参加ACM与蓝桥杯竞赛的同学而准备的,蓝桥杯与ACM考察内容甚至评测标准基本都一样,因此本训练计划提供完整的刷题顺序,循序渐进,提高代码量,巩固基础。因竞赛支持C语言、C、Java甚至…...

Java基础知识快速盘点(三)

一,构造器 创建一个类的方法时会调用该类的构造器 构造器,也叫构造方法 构造器是属于类的,对象不可调用 构造方法没有返回值类型 构造方法一般用public修饰,也可用private修饰,例如 public class Test {private T…...

vscode编程小插件之Doxygen和Better Align

一、插件Doxygen:配置相应文件、函数说明项。 1、扩展商店,搜索Doxygen,如下图1,安装。 图1 2、设置项中,选择扩展设置,如图2 图2 3、配置版本、作者邮箱、作者名称、日期格式等等,如图3 4、定义函数后&…...

指 针

1.指针指针的作用: 可以通过指针间接访问内存(可以通过指针的保存一个地址(指针--地址))内存编号是从0开始记录的,一般用十六进制数字表示。可以利用指针变量保存地址指针变量的定义和使用指针变是定义语法: 数据类型 …...

安卓小游戏:俄罗斯方块

安卓小游戏:俄罗斯方块 前言 最近用安卓自定义view写了下飞机大战、贪吃蛇、小板弹球三个游戏,还是比较简单的,这几天又把俄罗斯方块还原了一下,写了一天,又摸鱼调试了两天,逻辑不是很难,但是…...

NC113 验证IP地址

验证IP地址_牛客题霸_牛客网 描述 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址 IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1&#…...

珠宝企业如何利用私域实现业绩增长?

近年来私域的流量不断兴起,各行业都在做私域,所处行业不同,企业所采取的私域打法也会针对性地改变。而在珠宝行业,针对珠宝产品高价、低频的消费特点,企业又该如何搭建私域应对策略? 快鲸scrm系统整理了几…...

回收站清空了还能找回来吗?回收站恢复的4个方法(最全)

回收站作为一个数据回收的地方,可以保存已删除的文件很久,直到用户手动永久删除这些数据,这为用户避免了许多数据丢失的问题。但是回收站数据过多,难免会影响电脑的运行速度。为此,我们都会定期进行清理。 清理过程中…...

深度解析React性能优化API

性能优化一直是前端领域讨论的一个热门问题,但在平时沟通及code review过程中发现很多人对于React中性能优化理解很模糊,讲不清楚组件什么时候更新,为什么会更新,关于React性能优化的文章虽然比较多,但大多数都是在罗列…...

算法刷题打卡第91天:统计一个圆中点的数目

统计一个圆中点的数目 难度:中等 给你一个数组 points ,其中 points[i] [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。 同时给你一个数组 queries ,其中 queries[j] [xj, yj, rj] ,表…...

wordpress浮窗播放器/论坛排名

来源:blog.csdn.net/jackJruit/article/details/108287490一.整体功能介绍/***********************************************************实现一个登陆界面1 输出一个登陆界面2 用户名能够实现邮箱验证,regex库,密码要不可见3 进度条的模拟实…...

邢台住房和城乡建设部网站/seo培训赚钱

场景 github看到一个Wxpuhser的项目,想知道它的使用场景,如何使用,以及由此引申出来的思考 项目中运行一个任务,对于执行结果需要及时接收到信息,有哪几种备选方案? 方式一:发短信。集成第三方提供的短信接口&…...

店铺推广软文范文/seo教程seo入门讲解

一、眼功眼功俗称盯球功夫。它主要培养运动员在球场上拥有精准的洞察能力和击球意识的基础。眼功主要包括视觉反应、环视能力及视野。其中视觉反应尤为关键,它主要参照教练员提供的信息,同时观察对手各种不同动作,精准的判断出对手的下一个动作&#xff…...

贵南县wap网站建设公司/综合搜索引擎

单例模式用于当一个类只能有一个实例的时候, 通常情况下这个“单例”代表的是某一个物理设备比如打印机,或是某种不可以有多个实例同时存在的虚拟资源或是系统属性比如一个程序的某个引擎或是数据。用单例模式加以控制是非常有必要的。 单例模式需要达到…...

wordpress彩色标签/百度优化师

方法一:.tar.gz包安装方法: 第一步:从腾讯官方下载QQ的安装文件,并假设下载后是这个位置/path/linuxqq_preview1.0_2_i386.tar.gz 第二步:将QQ安装文件复制到用户目录中(假设用户目录是:/home/drmeng) # cp path/linux…...

党建网站建设解决方案/上海seo优化bwyseo

遗憾的是,这些问题尚未得到解答.Cordova plugin.xml中添加了一项新功能,以支持将android子项目添加到Cordova项目中.以下是上述项目的示例,对于iOS,它非常相似,添加如下框架:然后cordova CLI将知道如何将整个文件夹添加到Cordova项目,并将子项目添加到eclipse项目,并…...