Erupt框架学习

Erupt框架学习

  • Erupt框架
    • Erupt简介
    • 学习
      • @Erupt
      • @EruptField
      • Erupt的逻辑删除
      • Erupt的自定义按钮
      • 多数据源配置

Erupt框架

Erupt简介

最近因为工作所以接触到了一个低代码框架Erupt。这是一个通用的配置管理框架,主打就是零前端代码,急速开发通用管理框架。
Erupt使用文档
Erupt演示地址
Erupt首页地址

学习

@Erupt

这个注解主要是放在类上面,@Erupt有几个属性用于进行功能的声明和扩展。

  1. name:功能名称(这个类主要是用于做什么的,例如Student类用于做学生管理,那么功能名称应该就是学生管理
  2. primaryKeyCol 主键列的名称,如果表中id是主键,那么就不用声明,如果表中主键不是id,那么就需要使用这个属性用于声明注解,例如:primaryKeyCol=“属性名称” 这个是属性名称,不是数据库表中的字段
  3. power 控制类的一些权限,例如控制增删改查导入导出功能
    @Erupt(name = "Erupt",power = @Power(add = true, delete = true, edit = true, query = true, importable = false, export = false)
)
public class EruptTest extends BaseModel {}

当需要导出和导入功能时,需要将importable和export设置成true
具体的使用方法
使用文档的解释

  1. filter 数据展示的过滤条件,参照的是HQL语句where语法 比如如果你想要将已删除的数据不展示在表格中,就可以通过这个来实现 如下代码所示
@Erupt(name = "用户管理",filter = @Filter("delete_status='0'")
)
@Table(name = "user")
  1. 更多的可以查看@Erupt的使用文档,地址在@Erupt注解属性说明 在这里插入图片描述

@EruptField

字段注解,加载类的属性上面,例如

@EruptField(views = @View(title = "名称"),edit = @Edit(title = "名称")
)
private String name;

在这里插入图片描述
view和edit如果不写会怎样
在这里插入图片描述

这里说几个主要的字段配置例子

  1. id 表中的id其实在设置类的时候是可以通过继成BaseModel来自动实现,在实现用户添加的时候自动添加用户的id,但是这个时候他的id生成策略就是已经规定好了的。@Erupt框架有自己写好的几个工具类用于来实现这样的功能 例如:在这里插入图片描述
    如果你不想通过继承BaseModel这样的方法来实现id的自动生成,那么你可以通过几个注解来实现用户添加的时候自动创建用户id 例如
	@Id@Column(name = "id")@GeneratedValue(generator = "system-uuid")@GenericGenerator(name = "system-uuid", strategy = "uuid")@EruptField(views = @View(title = "编号"),edit = @Edit(title = "编号",search = @Search(vague = true)))private String id;
  1. 普通的字段,例如文本、数字等等的例子:
	@Basic@Column(name = "user_name")//数据库中的字段名称@EruptField(views = @View(title = "用户名"), //表格中显示的标题edit = @Edit(title = "用户名",search = @Search(vague = true))//启用查询)private String userName;

上面的@Edit注解中的search这个属性是指是否通过这个字段进行查询

  1. 图像显示
 @Basic@Column(name = "header_img")@EruptField(views = @View(title = "头像"),edit = @Edit(title = "头像", type = EditType.ATTACHMENT,attachmentType = @AttachmentType(type = AttachmentType.Type.IMAGE, maxLimit = 1)))private String headerImg;

上面的maxLimit表示最多显示的图片数量,当他为1的时候就表示只能显示一张,但是当大于1的时候就可以显示多张

具体的使用方法可以查看使用文档中的这个内容在这里插入图片描述

如果项目配置了服务器的图片存储路径的话,需要进行额外的设置。点击上图的自定义附件上传规则查看文档即可。
在这里插入图片描述
需要注意的是,在进行了一系列的配置之后,一定要记得在项目的resources目录下的public下的app.js文件中修改文件上传位置
在这里插入图片描述
app.js文件如下所示

window.eruptSiteConfig = {//erupt接口地址,在前后端分离时指定domain: "",//附件地址,一般情况下不需要指定,如果自定义对象存储空间,则需在此指定附件资源访问地址fileDomain: "自己设置的服务器名称,例如http://www.bai.com",//标题title: "项目的标题",//描述desc: "项目描述",//高德地图api key,使用地图组件须指定此属性,amapKey获取地址:https://lbs.amap.comamapKey: "6ba79a8db11b51aeb1176bd4cfa049f4",//logo路径logoPath: "erupt.svg",//logo文字logoText: "logo文字",//是否开启路由复用routerReuse: true,
};
  1. 字典属性
@Basic@Column(name = "sex")@EruptField(views = @View(title = "性别"),edit = @Edit(title = "性别", type = EditType.CHOICE, desc = "动态获取字典项的值",choiceType = @ChoiceType(fetchHandler = DictCodeChoiceFetchHandler.class,fetchHandlerParams = "USER_SEX" //字典编码,通过字典编码获取字典项列表),search = @Search(vague = true)))private String sex;

这个字典是需要在Erupt的字典维护中添加的
5. 时间属性

	@Basic@Column(name = "register_time")@EruptField(views = @View(title = "注册时间"),edit = @Edit(title = "注册时间", type = EditType.DATE, dateType = @DateType(type = DateType.Type.DATE_TIME)))private Date registerTime;
  1. 富文本
	@Basic@Column(name = "content")@Lob  //富文本编辑器所产生的文本量较大,所以设置为长字符串类型在数据库中存储@EruptField(edit = @Edit(title = "信息",type = EditType.HTML_EDITOR,htmlEditorType = @HtmlEditorType(HtmlEditorType.Type.UEDITOR)))private String content;

Erupt的逻辑删除

逻辑删除即不是真的删除,而是仅仅只修改删除状态值。通过在类上添加一个@Sql来实现逻辑删除
在这里插入图片描述

Erupt的自定义按钮

自定义按钮需要在类上面进行标注,例如下面代码所示:

@Entity
@Data
@Erupt(name = "用户",rowOperation = {@RowOperation(title = "审核",code = "SINGLE",mode = RowOperation.Mode.SINGLE,operationHandler = UserAudit.class),},filter = @Filter("delete_status='0'")
)
@Table(name = "user")
@SQLDelete(sql="update user set delete_status = '1', delete_time = now() where id = ?")
public class UserEntity {
....
}

operationHandler = UserAudit.class定义按钮的实现类
UserAudit按钮实现类如下:

 @Service
public class UserAudit implements OperationHandler<UserEntity, Void> { @Resourceprivate EruptDao eruptDao;@Overridepublic String exec(List<UserEntity> data, Void unused, String[] param) {EntityManager entityManager = eruptDao.getEntityManager("mysql_cxy");//这个是定义的多数据源的其中一个操作数据源名称entityManager.getTransaction().begin();UserEntity userEntity = data.get(0);//这个表示的就是在表中获取的那一行的数据实体类userEntity.setStatus("1");entityManager.merge(userEntity);entityManager.flush();entityManager.getTransaction().commit();entityManager.close();return "this.msg.success('审批成功')";}
}

在这里一定要注意的就是事务的开启关闭和提交
具体的使用方法可以看使用文档
在这里插入图片描述

多数据源配置

当项目涉及到多个数据源的时候,就需要进行多数据源配置了,在使用文档中,多数据源的配置是这样的:
在这里插入图片描述
先添加配置,然后在启动类上添加扫描,然后为每个不同数据源中的实体声明不同的数据源名称
就是在实体类上添加这个注解@EruptDataSource(“xxxx”) //这个xxx的值就是配置文件中 erupt.dbs.datasource.name 的值

经过这段时间的学习,我深深的体会到了这个框架的优点,是真的很方便,也是真的很快速,但是如果真的想彻底玩转这个框架还是需要掌握JPA方面的知识以及深厚的java基础。在保证这两方面都满足的前提下,你还需要有足够的耐性去慢慢的摸索这个框架的一些用法,刚刚入门的时候可以看看这个框架的一个演示demo,通过这个demo你能够很快的理解其中的一些用法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8431.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用命令【多图预警】

Linux常用命令 文章目录 Linux常用命令Linux虚拟机的安装Linux系统目录结构Linux命令的语法基础命令查看当前目录下所有子目录和子文件ls查看命令手册man查看当前目录pwd切换到指定目录cd 管道符 |文件目录操作命令创建一级目录&#xff08;文件夹&#xff09;mkdir创建多级目录…

【Servlet学习二】Servlet原理(Tomcat) ServletAPI

目录 &#x1f31f;一、Servlet运行原理 &#x1f308;1、Servlet的执行原理&#xff08;重点&#xff09; &#x1f308;2、Tomcat伪代码的简单理解 2.1 Tomcat初始化流程 2.2 Tomcat处理请求流程 2.3 Servlet 的 service 方法的实现 &#x1f31f;二、Servlet API 详…

Flutter基础布局

Column:纵向布局 Column相当于Android原生的LinearLayout线性布局。 主要代码&#xff1a; class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(BuildContext context) {return Container(width: double.infi…

深脑接口 | 清华大学李路明团队NSR综述

更多脑机接口前沿技术&#xff0c;关注公众号&#xff1a;脑机接口社区 如何让机器与人类的大脑深处实现交互&#xff1f;清华大学李路明教授研究团队在《国家科学评论》&#xff08;National Science Review, NSR&#xff09;发表综述文章&#xff0c;介绍深脑接口&#xff0…

MMaction2 使用记录1——训练及测试

目录 训练及测试 Training 在你的 PC上训练 Training 多 GPUs Test 训练及测试 Training 在你的 PC上训练 你可以使用tools/train.py在一台有CPU和可选GPU的机器上训练一个模型。 下面是该脚本的完整用法&#xff1a; python tools/train.py ${CONFIG_FILE} [ARGS] 默…

蓝桥杯专题-试题版含答案-【猴子吃桃问题】【小光棍数】【九九乘法表】【谁是最好的Coder】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

快速入门uniapp——从环境搭建到项目实践

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;快速入门uniapp——从环境搭建到项目实践 文章目录 初步介绍UniApp开发环境搭建下载和安装UniApp开发工具创建新项目&#xff08;HBuilderX&#xff09;开发工具界面介绍 UniApp基础知识页面结构页面…

linux入门进程概念中(僵尸进程,孤儿进程,进程优先级,并行和并发,环境变量)

目录 一、进程状态 1.看看Linux Kernel怎么说 1.1阻塞 2.进程状态查看 3.僵尸进程 3.1模拟僵尸进程的实验 3.2僵尸进程的危害 4.孤儿进程 4.1模拟孤儿进程实验 二、进程优先级 三、环境变量 3.1常见环境变量 3.2查看环境变量的方法&#xff1a; 3.3 加入环境变量 …

JAVA开发与运维(怎么通过docker部署微服务jar包)

目标&#xff1a; 通过docker的方式部署微服务。 一、背景&#xff1a; 我们通过java开发的微服务可以打成jar包&#xff0c;我们可以直接通过裸机部署&#xff0c;也可以通过docker来部署&#xff0c;本文介绍通过docker来部署微服务。 二、首先我们介绍一下docker的发展过程…

LLM应用的技术栈与设计模式详解

大型语言模型是构建软件的强大新原语。 但由于它们是如此新&#xff0c;并且其行为与普通计算资源如此不同&#xff0c;因此如何使用它们并不总是显而易见的。 在这篇文章中&#xff0c;我们将分享新兴 LLM 应用程序的参考架构。 它展示了我们所见过的人工智能初创公司和先进科…

七牛云面试复盘-实习后端Java开发 一面复盘 【已通过】

💪💪💪欢迎订阅本专栏,持续更新,本专栏内容为我参加的各个公司面试的复盘专栏。将完整记录面试细节问题。 七牛云面试 实习后端Java开发 一面 [视频面试] 首先自我介绍 我是XXX,来自XXX,XXXX。 面试官提问: 1.先问几个基础题,循序渐进的来哈,谈谈Java⾃动装箱…

【云原生】软件架构的演进以及各个架构的优缺点

文章目录 1. 什么是软件架构?2. 单机架构3. 应用数据分离架构4. 应用服务集群架构5. 读写分离架构6. 冷热分离架构7.垂直分库架构8. 微服务架构9. 容器编排架构10. 小结 1. 什么是软件架构? 软件架构是指在设计和构建软件系统时&#xff0c;对系统的组织结构、组件、模块、接…