告别996,纯 Java 注解,开发 Admin 管理后台
今天给大家带来一款开源的 Java 后台管理框架——Erupt Framework
erupt 是一个低代码 全栈类 框架,它使用 Java 注解 动态生成页面以及增、删、改、查、权限控制等后台功能,会简单的 Spring Boot 基础知识即可,不需要懂前端,也不需要写繁琐的 CURD ,自动创建表结构,controller / service / sao / mapper 文件都不用创建,极大减少开发工作量,将后台开发速度提升到极致。
简单新建一个实体类,加点注解,就ok了,不信?跟着本文,跟着我探索 erupt 的奥秘。
一、快速开始
1.1 环境准备
后端环境:
- JDK 1.8+
- Maven 3.0+
- MYSQL 5.5+
开发工具
- IDE:IDEA
- MySQL 可视化:Navicat
1.2 快速开始
(1)clone 项目
- GitHub:
git clone https://github.com/erupts/erupt-example.git
- Gitee(国内访问网速较快):
git clone https://gitee.com/erupt/erupt-example.git
(2)创建 MySQL 数据库
打开 Navicat,连接 MySQL,新建数据库 erupt,设置字符集和排序规则如下图所示:
(3)运行后端项目
配置文件:使用 IDEA 打开后端项目 erupt-example,等待 maven 下载结束后,打开配置文件 yml 配置数据库,改成你机器上的 MySQL。
# application.properties写法
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/erupt?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
项目启动的时候,会自动导入数据表到MySQL。
1.3 效果预览
运行成功访问 http://localhost:8080
账号:erupt
密码:erupt
二、快速创建一个管理页面
2.1 创建一个Java 实体类
创建一个Java类,代码如下
package xyz.demo.erupt.example.model;
import org.hibernate.annotations.GenericGenerator;
import xyz.erupt.annotation.Erupt;
import xyz.erupt.annotation.EruptField;
import xyz.erupt.annotation.sub_field.Edit;
import xyz.erupt.annotation.sub_field.View;
import javax.persistence.*;
/*
* @Erupt注解修饰在类上,@EruptField注解修饰在字段上
* 其他注解均为Jpa注解
*/
@Erupt(name = "简单的例子")
@Table(name = "demo_simple")
@Entity
public class Simple {
//主键
@Id
@GeneratedValue(generator = "generator")
@GenericGenerator(name = "generator", strategy = "native")
@Column(name = "ID")
@EruptField
private Long id;
//文本输入
@EruptField(
views = @View(title = "文本"),
edit = @Edit(title = "文本")
)
private String input;
//数值输入
@EruptField(
views = @View(title = "数值"),
edit = @Edit(title = "数值")
)
private Integer number;
//布尔选择
@EruptField(
views = @View(title = "布尔"),
edit = @Edit(title = "布尔")
)
private Boolean bool;
//时间选择
@EruptField(
views = @View(title = "时间"),
edit = @Edit(title = "时间")
)
private Date date;
}
2.2 启动项目,添加菜单运行效果演示
Erupt支持的组件多达23类,可根据实际需求灵活的配置管理后台!
三、核心注解 → @Erupt
3.1 使用方法
@Erupt(
name = "Erupt", //功能名称
desc = "Erupt Framework", //描述
loginVerify = true, //是否开启权限验证
orderBy = "id desc", //排序表达式
)
public class EruptTest extends BaseModel {
}
3.2 注解配置项说明
属性名 | 描述 |
primaryKeyCol | 主键列名称,默认值为id |
name | 功能名称 |
desc | 功能描述 |
authVerify | 访问是否需要授权校验 |
orderBy | 排序规则,参照HQL语句 order by 语法 |
power | 控制增删改查导入导出功能 |
filter | 数据展示过滤条件,参照HQL语句where语法 |
tree | 树节点配置 |
linkTree | 左树右表配置 |
drills | 自定义下钻关联视图 |
rowOperation | 自定义功能按钮 |
dataProxy | 代理回调接口方法集 |
param | 自定义参数 |
四、核心注解 → @EruptField
4.1 注解示例
@EruptField(
sort = 10,
views = @View(title = "名称"),
edit = @Edit(title = "名称")
)
private String name;
4.2 注解配置项说明
注解 | 描述 |
---|---|
views | 表格展示配置 |
edit | 编辑项配置 |
sort | 前端展示顺序,默认按照字段排列顺序进行排序,数字越小越靠前 |
params | 自定义参数 |
4.3 @View
属性名 | 描述 |
---|---|
title | 表格列名称 |
desc | 表格列描述 |
column | 如果修饰字段为对象类型,需要使用此属性指定,要展示哪一个字段在@ManyToOne时使用此配置 |
type | 数据展示形式,详见 type参照 |
show | 是否显示 |
sortable | 是否支持排序前端通过表格列进行排序操作 |
export | 是否支持Excel导出 |
className | 表格样式类名 |
template | 字符串转换模板 该参数在前端使用eval方法解析支持变量:1、item(整行数据)2、item.xxx(数据中的某一列)3、value (当前数据)配置为 → template = “‘姓名:’ + value”展示效果 → 姓名xxxx |
@View → type参照
属性名 | 描述 |
---|---|
AUTO | 根据@Edit → EditType或字段类型自动识别EditType.ATTACHMENT → ATTACHMENTEditType.ATTACHMENT.IMAGE → IMAGEEditType.HTML_EDITOR → HTMLEditType.CODE_EDITOR → CODEEditType.MAP → MAP Boolean → BOOLEANDate → DATEInteger → NUMBERFloat → NUMBERDouble → NUMBER其他 → TEXT |
TEXT | 普通文本 |
IMAGE | 图片 |
IMAGE_BASE64 | base64格式图片 |
SWF | flash动画 |
HTML | 渲染HTML代码段 |
MOBILE_HTML | 手机屏幕尺寸渲染HTML代码段 |
QR_CODE | 二维码 |
LINK | 新窗口方式打开链接 |
LINK_DIALOG | 对话框方式打开链接 |
DOWNLOAD | 直接下载 |
ATTACHMENT | 新窗口方式代开附件 |
ATTACHMENT_DIALOG | 对话框方式打开附件 |
DATE | 日期 |
BOOLEAN | 布尔 |
NUMBER | 数值 |
MAP | 地图 |
CODE | 代码 |
4.4 @Edit
属性名 | 描述 |
---|---|
title | 编辑框名称 |
desc | 描述 |
notNull | 是否为必填项 |
show | 是否显示 |
showBy | 组件在何种情况下显示,具体使用方法如下:showBy = @ShowBy(dependField = “number”, expr = “value == 1”)****dependField:展示此组件需要依赖的组件expr:表达式返回true则本组件显示表达式说明:value表示依赖字段number的值,语法为JavaScript,如果number的输入值为1则显示本组件。 |
placeHolder | 描述输入字段预期值的提示信息 |
search | 是否支持搜索 |
orderBy | 排序规则,参照hql语句 order by 语法当字段类型为@Erupt修饰的对象时可用 |
filter | 排序规则,参照hql语句where语法当字段类型为@Erupt修饰的对象时可用 |
type | 编辑类型,详见 type参照 |
@Edit → type参照
类型 | 描述 |
---|---|
AUTO | 默认为此类型,可通过字段类型等特征进行推断 |
INPUT | 文本输入框 |
NUMBER | 数值输入框 |
SLIDER | 滑动输入条 |
DATE | 时间选择器 |
BOOLEAN | 开关 |
CHOICE | 单选框 |
TAGS | 标签选择器 |
AUTO_COMPLETE | 自动完成 |
TEXTAREA | 多行文本输入框 |
HTML_EDITOR | 富文本编辑器 |
CODE_EDITOR | 代码编辑器 |
ATTACHMENT | 附件,图片 |
MAP | 地图 |
DIVIDE | 分割线 |
TPL | 自定义HTML模板 |
表单联合 | |
HIDDEN | 隐藏 |
EMPTY | 空(仍占据组件位置) |