jhipster自动生成java代码的方法
一、前言
java springboot后台项目用到了jpa
查询数据库,还用到了jhipster
,这个东西可以自动生成基础的Controller
、Service
、Dao
、JavaBean
等相关代码,减少重复开发。
在此总结下使用方法。
二、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里的fieldValidateRulesMaxlength
与fieldValidateRules
不能乱用:
// "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ÿ…...

【测试工程师面试】详细记录 自己的一次面试
【测试工程师面试】详细记录 自己的一次面试 目录:导读 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 中所有为等差数组的 子数组 个数。 …...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...