10个基于java的cms网站内容管理系统(EruptErupt框架底层应用JPA持久化,预置创建系统表和数据)
优采云 发布时间: 2022-04-07 04:1810个基于java的cms网站内容管理系统(EruptErupt框架底层应用JPA持久化,预置创建系统表和数据)
本文主要讲解“如何搭建Java管理系统”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让小编带你学习“如何搭建Java管理系统”吧!
Erupt 是一个通用的后台管理框架。据说具有超低代码量、零前端代码、零CURD操作、无需建表、纯Java注解开发等特点。号称能在三分钟内搭建完整的后台管理系统。
诶~ 好像挺受欢迎的。有这么神奇吗?一起用起来感受一下吧。
首先,让我们构建环境。目前,Erupt 支持 Java 版本 1.8.0 及以上版本,Spring Boot 版本 2.0 及以上版本。
轻松构建
pom.xml 引入必要的jar包
org.springframework.boot
spring-boot-starter
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上提交案例代码的时候(最近发现有朋友已经在数据库上运行项目了,仔细看了一下里面的数据结构。,发现它是一个毕业设计。
这个库本身就是我运行demo case的一个测试库,为了让小伙伴们有更多的时间花在研究案例的技术点上,减少没有技术含量的搭建环境的琐事。
我发现我这里没有改密码,也没有删除他们的库。想用的话可以继续用,但是玩了以后就不能乱用不属于你的数据了!影响别人的学习是不好的。
spring:
datasource:
url: jdbc:mysql://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环境已经搭建好了,诶~,就这样结束了?
我们什么都没做,项目是一个空壳,我们没有写一行代码,看起来我们甚至没有建一个表!
别着急,我们先启动项目,看到控制台打印出很多建表语句和insert语句。这是因为 Erupt 框架的底层应用了 JPA 持久化,并且默认创建了一些系统表和数据。
注意:Erupt 预设表只会在项目第一次启动时构建一次。如果要重新创建,需要删除.Erupt文件(一般在项目工作区),获取文件位置方法
System.getProperty("user.dir")
查看数据库中创建的16个系统表,其中e_upms_user表是用户表。默认只有一个管理员账号,用户名和密码都爆了。
然后我们访问:8888/看看效果如何。有一个完整的登录页面。
使用上面的用户名和密码直接登录。Erupt 已经预先实现了完整的权限控制等功能,到现在为止我们几乎没有写过任何代码。搞定之后,搭建了一个基本的后台管理系统,有点别扭。
有趣的页面
那么问题来了?如果要自定义页面怎么办?
一开始我们说erupt是零前端代码,都是基于Java注解开发的,然后用Java注解写一个简单的页面体验。
erupt 有两个核心注解@Erupt、@EruptField
注解的种类很多,我就不一一列举了。欲了解更多信息,请访问官方网站:
下面我们定义一个Student类,加上@Erupt、@EruptField注解,这样就算页面和元素都写完了,是不是有点颠覆?
/*
* @Erupt注解修饰在类上,@EruptField注解修饰在字段上
* 其他注解均为Jpa注解
*/
@Getter
@Setter
@Erupt(name = "学生表",
power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {
@EruptField(
views = @View(title = "学生姓名"),
edit = @Edit(title = "学生姓名", notNull = true, search = @Search(vague = true))
)
private String studentName;
@EruptField(
views = @View(title = "所属班级"),
edit = @Edit(title = "所属班级", notNull = true)
)
private String studentClass;
@EruptField(
views = @View(title = "学生年龄"),
edit = @Edit(title = "学生年龄", notNull = true)
)
private String studentAge;
@Lob
@EruptField(
views = @View(title = "学生性别"),
edit = @Edit(title = "学生性别", notNull = true)
)
private String studentSex;
@EruptField(
views = @View(title = "考核状态"),
edit = @Edit(title = "考核状态", notNull = true, boolType = @BoolType(trueText = "通过", falseText = "挂科"), search = @Search)
)
private Boolean status;
}
但是此时新创建的页面并不会显示出来,我们需要在菜单维护中手动创建映射关系来自定义一个菜单。类型值必须是新创建的类名 Student。
保存刷新后,你会看到我们的新页面出现了,页面的功能很齐全,基本的操作,查询,导入导出功能都是自动实现的。
页面增加了一条新的*敏*感*词*,对应的Student表也多了一条记录,这个持久化过程完全由框架完成。
虽然 Erupt 框架对前后端代码进行了深度封装,但它提供了丰富灵活的自定义接口来满足我们的个性化需求。
比如我们在输入新的*敏*感*词*的时候,想要屏蔽张三同学,我们可以为页面按钮功能代理dataProxy实现自定义逻辑,为哪个按钮代理实现相应的方法,比如beforeAdd和afterAdd 是对按钮添加代理。
@Getter
@Setter
@Erupt(name = "学生表",dataProxy = {StudentDataProxy.class},
power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {
}
public class StudentDataProxy implements DataProxy {
@Override
public void beforeAdd(Student student) {
//后台字段校验
if ("张三".equals(student.getStudentName())) {
throw new EruptApiErrorTip("名称禁止为张三!");
}
}
@Override
public void afterAdd(Student student) {
}
@Override
public void afterUpdate(Student student) {
}
@Override
public void afterDelete(Student student) {
}
}
当我们在页面输入一个叫张三的同学时,就被成功屏蔽了。类似的功能还有很多,这里就不举例了。看文档看文档~
如果我们想用传统的方式开发接口,不用担心与 Erupt 的页面生成规则冲突,完全不会受到影响。而且,Erupt 内部集成了 JPA,并提供了现成的 dao 接口。您可以通过调用相应的 API 来开始开发。
不想手工写Java代码也没关系,Erupt也提供了代码*敏*感*词*,可以自定义Java类名和字段名,可以生成代码,直接复制就好。
说到这里,我只介绍了 Erupt 的基本特性,主要是让朋友知道有这么敏捷的工具。
不仅如此,它还支持丰富的数据类型,内置定时任务管理、多表联合查询、前后端分离部署、接口权限、操作记录、多数据源、邮件等功能系统、黑白名单等。调用API即可使用。
至此,相信大家对“如何搭建Java管理系统”有了更深入的了解,那么就来试一试吧!这里是易速云网站,更多相关内容可在相关频道查询,关注我们,继续学习!