0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

3分钟纯Java注解搭个管理系统

jf_ro2CN3Fa 来源:程序员小富 2023-07-28 11:27 次阅读

Erupt一个通用后台管理框架,据说有 超低代码量零前端代码零 CURD操作无需建表Java注解开发 等特色,号称三分钟就可以搭建一个完整的后台管理系统。

额~ 听着好像还挺流批的,到底是不是有这么魔幻,咱们一起用起来感受下。

首先来搭建一下环境,目前Erupt支持Java版本1.8.0及以上、Spring Boot版本2.0及其以上。

搭建easy

pom.xml引入必要的jar包



org.springframework.boot
spring-boot-starter


mysql
mysql-connector-java

 

xyz.erupt
erupt-upms
1.6.7

 

xyz.erupt
erupt-security
1.6.7

 

xyz.erupt
erupt-web
1.6.7


org.springframework.boot
spring-boot-starter-tomcat
compile


application.yml 文件只要简单配置数据源就好,提前准备个数据库,说到数据库这里我说个小插曲。

我之前在Github 提交案例代码的时候,由于没太注意没屏蔽敏感信息,导致云数据库账号泄露了,最近我发现已经有小伙伴在数据库上跑项目了,仔细看了看里边的数据结构,发现像是个毕设项目。

294f9c5a-2ce7-11ee-815d-dac502259ad0.png

本身这个库就是我跑demo案例的一个测试库,为的就是让小伙伴能把更多时间放在研究案例的技术点上,减少搭建环境这种没技术含量的琐碎事。

发现归发现,这里我没改密码,也没删他们的库,如果你要用就继续用着,但玩归玩,闹归闹,你不能乱动不是你的数据 !影响其他人学习就不好了。

spring:
datasource:
url:jdbc//47.93.6.5:3306/erupt2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username:root
password:123456
jpa:
show-sql:true
generate-ddl:true
database-platform:org.hibernate.dialect.MySQL5InnoDBDialect
database:mysql
profiles:
active:dev
mail:
username:xxxx@qq.com
password:xxxxxxx
host:smtp.qq.com
properties:
mail.smtp.ssl.auth:true
mail.smtp.ssl.enable:true
mail.smtp.ssl.required:true
server:
port:8888

说了点题外话,我们继续搞起~

其实到这Erupt的环境就搭建完了,额~ ,这就完了?

咱们什么也没干,项目是个空壳子,一行代码也没写,好像连个表也没建啊!

29887d54-2ce7-11ee-815d-dac502259ad0.png

别着急咱们先启动下项目,看到控制台打印出很多建表语句和插入语句,这是因为Erupt框架底层应用JPA持久化,预置创建了一些系统表和数据。

299ef4b2-2ce7-11ee-815d-dac502259ad0.png

注意 :Erupt预置表只会随项目第一次启动构建一次,如果想重新创建,需删除.Erupt文件(一般在项目的工作空间内),获取文件位置方式

System.getProperty("user.dir")

再看数据库里创建了16张系统表,其中e_upms_user表是用户表,默认只有一个管理员账号,用户名、密码都是erupt。

29cfddf2-2ce7-11ee-815d-dac502259ad0.png

紧接着看一下是个什么效果,竟然有个完整的登录页面。

29e7da92-2ce7-11ee-815d-dac502259ad0.png

用上边的用户名、密码直接登录,erupt已经预先实现了完整的权限控等功能,而到这我们几乎是没写过什么代码的,都是框架封装好了的,菜单类数据全部从数据库动态获取,一个基础的后台管理系统就搭建完了,有点哇塞。

2a8853c8-2ce7-11ee-815d-dac502259ad0.png

有趣的页面

那么问题来了?想要自定义页面怎么办?

开篇我们就说过erupt是零前端代码,全部基于Java注解开发的,接下来用Java注解写个简单页面体验下。

erupt`有两个核心注解`@Erupt`,`@EruptField

@Erupt注解修饰类,代表定义一个页面

@EruptField注解修饰字段,代表页面上显示的字段名

@Power注解控制是否操作按钮,增、删、改、查、导入、导出等

@Search注解表示字段为搜索条件

@Table注解表示页面取数据对应的表,如果不设置,页面第一次初始化的时候,会根据类字段值自动创建一张和类名一致的表名。

注解类型比较多,不一一列举了,更多的自己到官网瞅:https://www.erupt.xyz

下边我们定义一个Student类,加上@Erupt,@EruptField注解,这样页面和元素就算写完了,是不是有点颠覆认知。

/*
*@Erupt注解修饰在类上,@EruptField注解修饰在字段上
*其他注解均为Jpa注解
*/
@Getter
@Setter
@Erupt(name="学生表",
power=@Power(importable=true,export=true)
)
@Entity
//@Table(name="t_student")
publicclassStudentextendsBaseModel{

@EruptField(
views=@View(title="学生姓名"),
edit=@Edit(title="学生姓名",notNull=true,search=@Search(vague=true))
)
privateStringstudentName;

@EruptField(
views=@View(title="所属班级"),
edit=@Edit(title="所属班级",notNull=true)
)
privateStringstudentClass;

@EruptField(
views=@View(title="学生年龄"),
edit=@Edit(title="学生年龄",notNull=true)
)
privateStringstudentAge;

@Lob
@EruptField(
views=@View(title="学生性别"),
edit=@Edit(title="学生性别",notNull=true)
)
privateStringstudentSex;

@EruptField(
views=@View(title="考核状态"),
edit=@Edit(title="考核状态",notNull=true,boolType=@BoolType(trueText="通过",falseText="挂科"),search=@Search)
)
privateBooleanstatus;
}

但此时新创建的页面不会显示出来,还需要我们手动做一个映射关系,在菜单维护中自定义个菜单,类型值 一定要为新建的 类名 Student。

2aaf5d1a-2ce7-11ee-815d-dac502259ad0.png

保存刷新后会看到我们的新页面出现了,而且页面的功能很完整,基础操作、查询、导入、导出功能都自动实现了。

2ae11508-2ce7-11ee-815d-dac502259ad0.png

页面新增一个学生信息,对应的Student表也多了条记录,而这个持久化的过程完全由框架来做。

2b0bd57c-2ce7-11ee-815d-dac502259ad0.png

尽管Erupt 框架对前后端代码做了深度封装,但它提供了丰富灵活的自定义接口,来满足我们的个性化需求。

比如我们在录入新学生信息时,希望屏蔽名字为张三的同学,可以对页面按钮功能做代理dataProxy,实现自定义的逻辑,对哪个按钮代理就实现对应方法即可,如beforeAdd、afterAdd是对新增按钮的代理。

@Getter
@Setter
@Erupt(name="学生表",dataProxy={StudentDataProxy.class},
power=@Power(importable=true,export=true)
)
@Entity
//@Table(name="t_student")
publicclassStudentextendsBaseModel{

}
publicclassStudentDataProxyimplementsDataProxy{

@Override
publicvoidbeforeAdd(Studentstudent){
//后台字段校验
if("张三".equals(student.getStudentName())){
thrownewEruptApiErrorTip("名称禁止为张三!");
}
}

@Override
publicvoidafterAdd(Studentstudent){

}
@Override
publicvoidafterUpdate(Studentstudent){

}

@Override
publicvoidafterDelete(Studentstudent){
}
}

当我们在页面录入名字为张三的同学时,成功屏蔽。其他类似的功能还有很多,这里就不一一举例了,看文档看文档~

2b311e22-2ce7-11ee-815d-dac502259ad0.png

如果我们想要按传统的方式开发接口,不用担心会和Erupt的页面生成规则有冲突,丝毫不会受影响。而且Erupt内部集成了JPA,提供了现成的dao接口,只要调用对应API即可上手开发。

2b55c57e-2ce7-11ee-815d-dac502259ad0.png

如果你不想手写Java代码也没关系,Erupt还提供了代码生成器,自定义Java类名和字段名,可以生成代码,直接copy就行了。

2b80b8f6-2ce7-11ee-815d-dac502259ad0.png2baaff80-2ce7-11ee-815d-dac502259ad0.png

说到这我只介绍了Erupt一丢丢的基础特性,主要是想让小伙伴知道有这么个敏捷利器。

不仅如此它还支持丰富的数据类型,内置了像定时任务管理、多表联合查询、前后端分离部署、接口权限、操作记录、多数据源、邮件系统、黑白名单等等很多实用功能,都直接调用API就可以用。

2bd9d328-2ce7-11ee-815d-dac502259ad0.png

说在后边

Erupt 框架的优点是显而易见的,快捷、高效、上手容易,对新手相当的友好,但在实际生产环境中我只是用它来做一些配置字典类的数据管理。

因为它的深度封装虽然让开发变的简单高效,可对于业务相对复杂、高度定制的系统来说,Erupt 框架显得力不从心,更关键的一点,它的社区并不算特别活跃,毕竟是个小众框架。

不过,技术从来都是服务于业务的,如果你的业务与Erupt的气质相匹配,别犹豫,用它!





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA语言
    +关注

    关注

    0

    文章

    138

    浏览量

    19944
  • 代码生成器
    +关注

    关注

    0

    文章

    25

    浏览量

    8996
  • API接口
    +关注

    关注

    1

    文章

    79

    浏览量

    10315

原文标题:干掉前端!3分钟纯 Java 注解搭个管理系统,我直接好家伙

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何通过注解来优化我们的Java代码

    Java注解可以说是我们编码过程中最常用的。本篇文章将给大家介绍Java注解的概念、作用以及如何使用注解来提升代码的可读性和灵活性,并介绍如
    的头像 发表于 09-30 11:39 329次阅读

    EJB3持久化规范

    .................................................................................................. 1174.3.1 在Java EE 容器内获取实体管理器工厂
    发表于 07-07 15:37

    3分钟以内可调的延时电路

    3分钟以内可调的延时电路用单结晶体管振汇器做延时电路时,其延时的长短主要由RC时间常数决定,因RC的数值都不宜取得过大,所以长延时就较难做到。本电路的延时范围在十几秒到1800秒内连续可调。
    发表于 09-22 09:27

    java学生信息管理系统

    java学生信息管理系统
    发表于 10-03 14:47

    java&Android小白求救

    ,对java、Android纯粹不懂,想请教下各位java、Android行业的前辈们,我这种小白,有戏吗?请大家给小弟支几招吧,跪求。
    发表于 10-27 15:48

    详细介绍了Java泛型、注解、并发编程

    介绍了Java泛型、注解、并发编程、数据传输与序列化、高效IO、容器集合、反射与类加载以及JVM重点知识线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种引用类型、GC
    发表于 08-20 06:09

    怎么实现基于java的土地档案管理系统设计?

    怎么实现基于java的土地档案管理系统设计?
    发表于 09-18 06:41

    HarmonyOS注解的使用方法分享

    定义我们的注解自定义注解1、声明注解功能:检测类中是否有规范的get方法新建java libray的module,命名为annotation,创建
    发表于 03-28 14:04

    基于Web远程文件管理系统java实现

    为了实现远程文件管理系统的跨操作系统运行,设计了一套基于 Java Socket 的远程文件类应用程序接口(API),并在此基础上实现了一个图形界面的Client/Server 结构的
    发表于 05-31 14:38 40次下载

    分析java注解基本概念

    什么是注解(Annotation): Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解
    发表于 09-27 14:53 0次下载

    注解定义Bean及开发

    注解本质是一个继承了Annotation 的特殊接口,其具体实现类是Java 运行时生成的动态代理类。
    发表于 08-02 10:26 321次阅读

    Springboot常用注解合集

    前几章,在系统启动类里面,都加入了此启动注解,此注解是个组合注解,包括了`@SpringBootConfiguration`、`@EnableAutoConfiguration`和`@
    的头像 发表于 04-07 14:27 524次阅读
    Springboot常用<b class='flag-5'>注解</b>合集

    JAVA注解是怎么做到的(上)

    。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。那么你知道JDK什么是元注解吗?注解有哪些分类吗?以及注解Java中最本质究竟是什么东西,
    的头像 发表于 05-11 10:57 470次阅读

    JAVA注解是怎么做到的(下)

    。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。那么你知道JDK什么是元注解吗?注解有哪些分类吗?以及注解Java中最本质究竟是什么东西,
    的头像 发表于 05-11 10:57 368次阅读
    <b class='flag-5'>JAVA</b>中<b class='flag-5'>注解</b>是怎么做到的(下)

    springmvc常用5种注解

    SpringMVC是一种基于Java的Web框架,使用注解可以更加方便灵活地开发和管理控制器,实现请求的映射和处理。在SpringMVC中,有许多常用的注解,本文将详细介绍其中的五种
    的头像 发表于 11-22 16:51 364次阅读