10个基于java的cms网站内容管理系统(EruptErupt框架底层应用JPA持久化,预置创建系统表和数据)

优采云 发布时间: 2022-04-07 04:18

  10个基于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

            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管理系统”有了更深入的了解,那么就来试一试吧!这里是易速云网站,更多相关内容可在相关频道查询,关注我们,继续学习!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线