告别996,纯 Java 注解,开发 Admin 管理后台

2,138 阅读5分钟

今天给大家带来一款开源的 Java 后台管理框架——Erupt Framework

erupt 是一个低代码 全栈类 框架,它使用 Java 注解 动态生成页面以及增、删、改、查、权限控制等后台功能,会简单的 Spring Boot 基础知识即可,不需要懂前端,也不需要写繁琐的 CURD ,自动创建表结构,controller / service / sao / mapper 文件都不用创建,极大减少开发工作量,将后台开发速度提升到极致。

项目地址:gitee.com/erupt/erupt

img

简单新建一个实体类,加点注解,就ok了,不信?跟着本文,跟着我探索 erupt 的奥秘。

一、快速开始

1.1 环境准备

后端环境:

  1. JDK 1.8+
  2. Maven 3.0+
  3. MYSQL 5.5+

开发工具

  1. IDE:IDEA
  2. 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。

image-20210108070144661

1.3 效果预览

运行成功访问 http://localhost:8080

image-20210108070308399

账号: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 启动项目,添加菜单运行效果演示

image-20210108071255035

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_BASE64base64格式图片
SWFflash动画
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模板
COMBINE表单联合
HIDDEN隐藏
EMPTY空(仍占据组件位置)
👇 如下组件使用较为复杂,建议充分了解JPA后使用
REFERENCE_TREE树引用
REFERENCE_TABLE表格引用
CHECKBOX复选框
TAB_TREE多选树
TAB_TABLE_REFER多选表格
TAB_TABLE_ADD一对多新增

五、参考

官方文档