Erupt框架学习

news2024/11/26 20:31:11

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.com
    amapKey: "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> { 
    @Resource
    private EruptDao eruptDao;
    @Override
    public 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.coloradmin.cn/o/718434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 如何调用python,避免重复造轮子

文章目录 原因资源调用python文件需求解决方案1、C#里面运行python引入python文件&#xff0c;再调用其中的方法启动python脚本&#xff0c;监听返回值改造一下&#xff0c;可以入参的python调用查看是否等待python运行完成之后再运行C#如果参数比较复杂 开一个python网络后端 …

如何用Airtest脚本无线连接Android设备?

1. 前言 之前我们已经详细介绍过如何用AirtestIDE无线连接Android设备&#xff1a; 手把手教你用AirtestIDE无线连接手机&#xff01; &#xff0c;它的关键点在于&#xff0c;需要先 adb connect 一次&#xff0c;才能点击 connect 按钮无线连接上该设备&#xff1a; 但是有很…

​浅谈大型语言模型

大型语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;是一类强大的人工智能模型&#xff0c;具有出色的自然语言处理能力。它们在许多任务中表现出色&#xff0c;如机器翻译、文本摘要、对话生成和情感分析等。下面我们将介绍大型语言模型的训练和生成过…

海康监控摄像机接入NTV GBS GB28181平台实现远程调取监控视频

海康威视各种型号监控摄像头或硬盘录像机(NVR/HVR)接入NTV GBS GB28181平台配置过程都非常简单明了&#xff0c;但有些细节需要注意&#xff0c;避免走弯路踩泥坑。 1、基本要求 1)网络要求 总体来说&#xff0c;只要监控设备和GB28181平台的网络是连通的&#xff0c;设备可以主…

MATLAB基础篇(上)

一、MATLAB简介 MATLAB(Matrix Laboratory, 即矩阵实验室)是MathWork公司推出的一套高效率的数值计算和可视化软件.MATLAB是当今科学界最具影响力、也是最具活力的软件, 它起源于矩阵运算, 并已经发展成一种高度集成的计算机语言.它提供了强大的科学运算、灵活的程序设计流程、…

保姆级python环境配置(anaconda+pycharm+cuda+cudnn+pytorch)

文章目录 前言一、如何下载anaconda1、下载网址2、版本选择3、下载流程4、注意事项 二、如何下载pycharm1、下载网址2、下载流程 三、更新NVIDIA驱动1、下载网址2、选择相应配置进行下载 四、如何下载cuda1、查看可安装的cuda版本号2、下载网址3、下载流程4、注意事项 五、如何…

牛客网数据库sql实战基础知识

sql基础知识 1.concat(a,“-”,b)&#xff1a; 将a和b列&#xff0c;连接成字符串&#xff0c;用-分割后输出成一列。&#xff08;分隔符在参数中间&#xff09; 2.insert into values(),()&#xff1a; 插入多列时用逗号分割&#xff0c;不需要在最外层加再加括号。 3.inse…

工信部新材料大数据创新联盟成立,龙讯旷腾作为首批会员单位参与大会

近日&#xff0c;“新材料大数据创新联盟”成立大会暨第一届理事会在京召开。为深入贯彻国家创新驱动发展战略&#xff0c;联盟在工业和信息化部指导下&#xff0c;由北京科技大学、中国钢研科技集团有限公司、中关村材料试验技术联盟联合材料和信息技术领域重点高校、科研院所…

浅学CSS

目录 CSS 是什么 基本语法规范 引入方式 内部样式表 行内样式表 外部样式 代码风格 样式格式 样式大小写 空格规范 选择器 选择器的功能 选择器的种类 基础选择器 标签选择器 类选择器 id 选择器 通配符选择器 基础选择器小结 复合选择器 后代选择器 子选…

<C语言> 指针(上)

1.指针是什么&#xff1f; 指针&#xff08;Pointer&#xff09;是一种特殊的变量类型&#xff0c;它存储了一个内存地址。可以将指针视为存储了另一个变量的地址的变量。通过指针&#xff0c;可以直接访问和修改内存中的数据。 指针提供了一种间接访问内存的方式&#xff0c…

SpringCloud源码探析(七)-整合Elasticsearch

1.概述 ElasticSearch是一个基于Lucene的搜索服务器&#xff0c;提供了一个分布式多用户能力的全文搜索引擎。它是基于JAVA语言开发&#xff0c;并且是基于RESTful web接口进行查询和结果返回&#xff0c;是一款非常流行的企业级搜索引擎。Elasticsearch的核心功能包括存储数据…

Redis缓存问题与缓存更新机制

目录 ​编辑 一、缓存问题 1.1 缓存穿透 1.1.1 问题来源 1.1.2 解决方案 1.1.2.1 缓存空对象 1.1.2.2 使用布隆过滤器 1.2 缓存击穿 1.2.1 问题来源 1.2.2 解决方案 1.2.2.1 设置热点数据永远不过期 1.2.2.2 新增后台定时更新缓存线程&#xff08;逻辑不过期&#xff09; 1.2.…

详解Java Synchronized锁升级原理

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;JAVA多线程 &#x1f96d;本文内…

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

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

(Linux) 套接字socket基础

文章目录 前言基本原理 Codeserverclient 核心函数socketbindlistenacceptrecvsendconnectclose 多线程改进END 前言 本文将以纯C语言描述&#xff0c;编译器gcc。 C/C没有标准的网络库&#xff0c;因为都需要用到各个平台的接口才行。 本文讲解Linux下最基础的socket编程&a…

uniapp 常用提示弹框整理

一. 加载提示弹框 在执行数据查询、页面数据渲染等过程中弹出提示。以页面渲染为例&#xff1a; //前端数据请求时&#xff0c;显示加载提示弹框 uni.showLoading({title: 加载中... }); // 数据从后端接口返回后&#xff0c;提示弹框关闭 uni.hideLoading();效果如下&#x…

Sui Builder House京都站|创意大赛获奖名单公布

Sui Builder House京都站于6月30日&#xff08;周五&#xff09;圆满结束&#xff0c;这是一次Sui生态系统项目演示和展示各自产品的良好机会。构建者们向大家展示了游戏、NFT、DeFi和基础设施赛道的项目&#xff0c;同时现场演讲还介绍了Sui的最新进展以及有关AI和用户体验设计…

React环境安装配置

React环境安装配置 一、前提二、React安装 一、前提 安装本地React环境需要Node.js&#xff0c;如果具有Node环境跳过即可。如果没有安装则可参考该篇文章安装Node环境&#xff0c;点击查看 二、React安装 全局安装React 首先打开命令行&#xff0c;建议以管理员身份输入命…

20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解)

20230704测试STC32G实验箱9.6&#xff08;STC32G12K128&#xff09;开发板的虚拟串口&#xff08;C语言深入了解&#xff09; 06第五集&#xff1a;C语言运算符和进制数入门上.mp4 07第五集&#xff1a;C语言运算符和进制数入门下.mp4 2023/7/4 19:00 下次 在【冲哥】录视频的时…