@Entity

public class PmsBrand {

@Id

@GeneratedValue(generator = "generator")

@GenericGenerator(name = "generator", strategy = "native")

@Column(name = "id")

@EruptField

private Long id;

@EruptField(

        views = @View(title = "品牌名称"),

        edit = @Edit(title = "品牌名称",notNull=true,search = @Search(vague = true))

)

private String name;

@EruptField(

        views = @View(title = "品牌首字母"),

        edit = @Edit(title = "品牌首字母",notNull=true)

)

private String firstLetter;

@EruptField(

        views = @View(title = "品牌LOGO"),

        edit = @Edit(title = "品牌LOGO", type = EditType.ATTACHMENT,

                attachmentType = @AttachmentType(type = AttachmentType.Type.IMAGE))

)

private String logo;

@EruptField(

        views = @View(title = "品牌专区大图"),

        edit = @Edit(title = "品牌专区大图", type = EditType.ATTACHMENT,

                attachmentType = @AttachmentType(type = AttachmentType.Type.IMAGE))

)

private String bigPic;

@EruptField(

        views = @View(title = "品牌故事"),

        edit = @Edit(title = "品牌故事")

)

private String brandStory;

@EruptField(

        views = @View(title = "排序"),

        edit = @Edit(title = "排序")

)

private Integer sort;

@EruptField(

        views = @View(title = "是否显示"),

        edit = @Edit(title = "是否显示")

)

private Boolean showStatus;

@EruptField(

        views = @View(title = "品牌制造商"),

        edit = @Edit(title = "品牌制造商")

)

private Boolean factoryStatus;

private Integer productCount;

private Integer productCommentCount;

}

复制代码


*   创建成功后重启项目,在`菜单维护`中添加一个叫`商品`的一级菜单;

![](https://s2.51cto.com/images/20210828/1630161742306418.jpg)

*   然后再添加一个叫`品牌管理`的二级菜单,注意选择好`菜单类型`和`上级菜单`,输入`类型值`为实体类的类名称`PmsBrand`;

![](https://s2.51cto.com/images/20210828/1630161743842302.jpg)

*   菜单添加成功后,刷新页面,完整的品牌管理功能就出现了,来试下新增;

![](https://s2.51cto.com/images/20210828/1630161743453063.jpg)

*   再看下查询列表页面,可以发现我们通过`@Edit`注解,将实体类的字段转换成了不同的输入控件,比如文本框、图片上传框、单选框和数值框。

![](https://s2.51cto.com/images/20210828/1630161743419471.jpg)

### [](https://gitee.com/vip204888/java-p7)核心注解说明

> 几个Erupt的核心注解,对照PmsBrand中的代码学习即可!

#### [](https://gitee.com/vip204888/java-p7)@Erupt

*   name:功能名称

*   desc:功能描述

#### [](https://gitee.com/vip204888/java-p7)@EruptField

*   views:表格展示配置

*   edit:编辑项配置

*   sort:前端展示顺序,数字越小越靠前

#### [](https://gitee.com/vip204888/java-p7)@View

*   title:表格列名称

*   desc:表格列描述

*   type:数据展示形式,默认为AUTO,可以根据属性类型自行推断

*   show:是否显示

#### [](https://gitee.com/vip204888/java-p7)@Edit

*   title:表格列名称

*   desc:表格列描述

*   type:编辑类型,默认为AUTO,可以根据属性类型自行推断

*   show:是否显示

*   notNull:是否为必填项

*   search:是否支持搜索,search = @Search(vague = true)会启用高级查询策略

[](https://gitee.com/vip204888/java-p7)扩展模块

-----------------------------------------------------------------------

> 当然Erupt的功能远不止于此,还集成了很多实用的系统功能,包括定时任务、代码生成器、系统监控及NoSQL支持等。

### [](https://gitee.com/vip204888/java-p7)定时任务`erupt-job`

> 通过定时任务功能,我们可以在代码中定义好定时任务,然后在图形化界面中操作任务,有点之前讲过的[PowerJob](https://gitee.com/vip204888/java-p7) 的感觉!

*   首先我们需要在`pom.xml`中添加`erupt-job`相关依赖;

<!–定时任务erupt-job–>

<dependency>

<groupId>xyz.erupt</groupId>

<artifactId>erupt-job</artifactId>

<version>${erupt.version}</version>

</dependency>

复制代码


*   之后在`application.yml`中添加邮件配置(否则启动会报错);

spring:

mail:

username: xxxxxx@qq.com

password: 123456

host: smtp.exmail.qq.com

port: 465

properties:

  mail.smtp.ssl.auth: true

  mail.smtp.ssl.enable: true

  mail.smtp.ssl.required: true

复制代码


*   之后创建一个定时任务实现类`JobHandlerImpl`,在`exec`方法中添加定时任务执行代码;

/**

  • Created by macro on 2021/4/13.

    */

@Service

@Slf4j

public class JobHandlerImpl implements EruptJobHandler {

@Override

public String exec(String code, String param) throws Exception {

    log.info("定时任务已经执行,code:{},param:{}",code,param);

    return "success";

}

}

复制代码


*   之后重新启动应用,在`任务维护`中添加一个定时任务,每5秒执行一次;

![](https://s2.51cto.com/images/20210828/1630161744843523.jpg)

*   添加成功后,定时任务开始执行,点击任务列表中的`日志`按钮即可查看执行日志。

![](https://s2.51cto.com/images/20210828/1630161744832978.jpg)

### [](https://gitee.com/vip204888/java-p7)代码生成器`erupt-generator`

> 如果你觉得手写实体类比较麻烦的话,还可以用用Erupt中的代码生成器。

*   在`pom.xml`中添加`erupt-generator`相关依赖;

<!– 代码生成器 erupt-generator –>

<dependency>

<groupId>xyz.erupt</groupId>

<artifactId>erupt-generator</artifactId>

<version>${erupt.version}</version>

</dependency>

复制代码


*   在`代码生成`菜单中我们可以像在Navicat中一样,直接添加表和字段,从而生成实体类代码;

![](https://s2.51cto.com/images/20210828/1630161745387762.jpg)

*   我们在添加过程中可以发现,Erupt支持的`编辑类型`还挺多的,多达`30`种;

![](https://s2.51cto.com/images/20210828/1630161745303658.jpg)

*   添加成功后,点击列表项的`代码预览`按钮可以直接生成代码,复制到自己项目下即可。

![](https://s2.51cto.com/images/20210828/1630161745390554.jpg)

### [](https://gitee.com/vip204888/java-p7)系统监控`erupt-monitor`

> 通过使用Erupt的系统监控功能,我们可以查看服务器的配置、Redis的缓存使用情况和在线用户信息。

*   在`pom.xml`中添加`erupt-monitor`相关依赖;

<!–服务器监控 erupt-monitor–>

<dependency>

<groupId>xyz.erupt</groupId>

<artifactId>erupt-monitor</artifactId>

<version>${erupt.version}</version>

</dependency>

复制代码


*   由于需要使用到Redis,所以要在`application.yml`中添加Redis配置,并开启Session的Redis存储功能;

spring:

redis:

host: localhost # Redis服务器地址

database: 1 # Redis数据库索引(默认为0)

port: 6379 # Redis服务器连接端口

password: 123456 # Redis服务器连接密码(默认为空)

timeout: 3000ms # 连接超时时间

erupt:

开启redis方式存储session,默认false,开启后需在配置文件中添加redis配置

redisSession: true

复制代码


*   通过`服务监控`菜单,可以查看到服务器的CPU、内存和Java虚拟机信息;

![](https://s2.51cto.com/images/20210828/1630161746661339.jpg)

*   通过`缓存监控`菜单,可以查看到Redis信息、命令统计和Redis Key统计;

![](https://s2.51cto.com/images/20210828/1630161746136399.jpg)

*   通过`在线用户`菜单,可以查看到在线用户信息,还可以让用户强行退出!

![](https://s2.51cto.com/images/20210828/1630161747537257.jpg)

### [](https://gitee.com/vip204888/java-p7)NoSQL数据源`erupt-mongodb`

> Erupt支持多种数据源,包括:MySQL、Oracle、PostgreSQL、H2,甚至支持 MongoDB。下面我们来体验下MongoDB的支持功能。

*   在`pom.xml`中添加`erupt-mongodb`相关依赖;

<!–NoSQL数据源 erupt-mongodb–>

<dependency>

<groupId>xyz.erupt</groupId>

<artifactId>erupt-mongodb</artifactId>

<version>${erupt.version}</version>

</dependency>

复制代码


*   由于需要使用到MongoDB,所以要在`application.yml`中添加MongoDB配置;

spring:

data:

mongodb:

  host: localhost # mongodb的连接地址

  port: 27017 # mongodb的连接端口号

  database: erupt # mongodb的连接的数据库

复制代码


*   以一个简化版的商品管理为例,还是熟悉的套路,添加一个`PmsProduct`实体类;

/**

  • Created by macro on 2021/4/13.

    */

@EruptDataProcessor(EruptMongodbImpl.MONGODB_PROCESS) //此注解表示使用MongoDB来存储数据

@Document(collection = "product")

@Erupt(

    name = "商品管理",

    orderBy = "sort"

)

public class PmsProduct {

@Id

@EruptField

private String id;

@EruptField(

        views = @View(title = "商品名称", sortable = true),

        edit = @Edit(title = "商品名称", search = @Search(vague = true))

)

private String name;

@EruptField(

        views = @View(title = "副标题", sortable = true),

        edit = @Edit(title = "副标题", search = @Search(vague = true))

)

private String subTitle;

@EruptField(

        views = @View(title = "价格", sortable = true),

        edit = @Edit(title = "价格")

)

private Double price;

@EruptField(

        views = @View(title = "商品图片"),

        edit = @Edit(title = "商品图片", type = EditType.ATTACHMENT,

                attachmentType = @AttachmentType(type = AttachmentType.Type.IMAGE))

)

private String pic;

学习分享,共勉

这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!

资料都是免费提供的,整理不易,有需要的朋友可以转发分享下,同时可以关注我,定期分享学习资源还会更新一些技术分享!

资料免费领取:点击这里即可免费获取!

整理不易,有需要的朋友转发支持下,感谢感谢!

Java核心知识体系笔记.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

中高级Java开发面试高频考点题笔记300道.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

架构进阶面试专题及架构学习笔记脑图

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

Java架构进阶学习视频分享