10個(gè)基于java的cms網(wǎng)站內容管理系統(EruptErupt框架底層應用JPA持久化,預置創(chuàng )建系統表和數據)
優(yōu)采云 發(fā)布時(shí)間: 2022-04-07 04:1810個(gè)基于java的cms網(wǎng)站內容管理系統(EruptErupt框架底層應用JPA持久化,預置創(chuàng )建系統表和數據)
本文主要講解“如何搭建Java管理系統”,感興趣的朋友不妨看看。本文介紹的方法簡(jiǎn)單、快速、實(shí)用。讓小編帶你學(xué)習“如何搭建Java管理系統”吧!
Erupt 是一個(gè)通用的后臺管理框架。據說(shuō)具有超低代碼量、零前端代碼、零CURD操作、無(wú)需建表、純Java注解開(kāi)發(fā)等特點(diǎn)。號稱(chēng)能在三分鐘內搭建完整的后臺管理系統。
誒~ 好像挺受歡迎的。有這么神奇嗎?一起用起來(lái)感受一下吧。
首先,讓我們構建環(huán)境。目前,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 文件只需要簡(jiǎn)單的配置數據源,提前準備好數據庫即可。說(shuō)到數據庫,我就講一個(gè)小插曲。
之前在Github上提交案例代碼的時(shí)候(最近發(fā)現有朋友已經(jīng)在數據庫上運行項目了,仔細看了一下里面的數據結構。,發(fā)現它是一個(gè)畢業(yè)設計。
這個(gè)庫本身就是我運行demo case的一個(gè)測試庫,為了讓小伙伴們有更多的時(shí)間花在研究案例的技術(shù)點(diǎn)上,減少沒(méi)有技術(shù)含量的搭建環(huán)境的瑣事。
我發(fā)現我這里沒(méi)有改密碼,也沒(méi)有刪除他們的庫。想用的話(huà)可以繼續用,但是玩了以后就不能亂用不屬于你的數據了!影響別人的學(xué)習是不好的。
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
說(shuō)了一點(diǎn)題外話(huà),我們繼續~
其實(shí)Erupt環(huán)境已經(jīng)搭建好了,誒~,就這樣結束了?
我們什么都沒(méi)做,項目是一個(gè)空殼,我們沒(méi)有寫(xiě)一行代碼,看起來(lái)我們甚至沒(méi)有建一個(gè)表!
別著(zhù)急,我們先啟動(dòng)項目,看到控制臺打印出很多建表語(yǔ)句和insert語(yǔ)句。這是因為 Erupt 框架的底層應用了 JPA 持久化,并且默認創(chuàng )建了一些系統表和數據。
注意:Erupt 預設表只會(huì )在項目第一次啟動(dòng)時(shí)構建一次。如果要重新創(chuàng )建,需要刪除.Erupt文件(一般在項目工作區),獲取文件位置方法
System.getProperty("user.dir")
查看數據庫中創(chuàng )建的16個(gè)系統表,其中e_upms_user表是用戶(hù)表。默認只有一個(gè)管理員賬號,用戶(hù)名和密碼都爆了。
然后我們訪(fǎng)問(wèn):8888/看看效果如何。有一個(gè)完整的登錄頁(yè)面。
使用上面的用戶(hù)名和密碼直接登錄。Erupt 已經(jīng)預先實(shí)現了完整的權限控制等功能,到現在為止我們幾乎沒(méi)有寫(xiě)過(guò)任何代碼。搞定之后,搭建了一個(gè)基本的后臺管理系統,有點(diǎn)別扭。
有趣的頁(yè)面
那么問(wèn)題來(lái)了?如果要自定義頁(yè)面怎么辦?
一開(kāi)始我們說(shuō)erupt是零前端代碼,都是基于Java注解開(kāi)發(fā)的,然后用Java注解寫(xiě)一個(gè)簡(jiǎn)單的頁(yè)面體驗。
erupt 有兩個(gè)核心注解@Erupt、@EruptField
注解的種類(lèi)很多,我就不一一列舉了。欲了解更多信息,請訪(fǎng)問(wèn)官方網(wǎng)站:
下面我們定義一個(gè)Student類(lèi),加上@Erupt、@EruptField注解,這樣就算頁(yè)面和元素都寫(xiě)完了,是不是有點(diǎn)顛覆?
/*
?*??@Erupt注解修飾在類(lèi)上,@EruptField注解修飾在字段上
?*??其他注解均為Jpa注解
?*/
@Getter
@Setter
@Erupt(name?=?"學(xué)生表",
????????power?=?@Power(importable?=?true,?export?=?true)
)
@Entity
//@Table(name?=?"t_student")
public?class?Student?extends?BaseModel?{
????@EruptField(
????????????views?=?@View(title?=?"學(xué)生姓名"),
????????????edit?=?@Edit(title?=?"學(xué)生姓名",?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?=?"學(xué)生年齡"),
????????????edit?=?@Edit(title?=?"學(xué)生年齡",?notNull?=?true)
????)
????private?String?studentAge;
????@Lob
????@EruptField(
????????????views?=?@View(title?=?"學(xué)生性別"),
????????????edit?=?@Edit(title?=?"學(xué)生性別",?notNull?=?true)
????)
????private?String?studentSex;
????@EruptField(
????????????views?=?@View(title?=?"考核狀態(tài)"),
????????????edit?=?@Edit(title?=?"考核狀態(tài)",?notNull?=?true,?boolType?=?@BoolType(trueText?=?"通過(guò)",?falseText?=?"掛科"),?search?=?@Search)
????)
????private?Boolean?status;
}
但是此時(shí)新創(chuàng )建的頁(yè)面并不會(huì )顯示出來(lái),我們需要在菜單維護中手動(dòng)創(chuàng )建映射關(guān)系來(lái)自定義一個(gè)菜單。類(lèi)型值必須是新創(chuàng )建的類(lèi)名 Student。
保存刷新后,你會(huì )看到我們的新頁(yè)面出現了,頁(yè)面的功能很齊全,基本的操作,查詢(xún),導入導出功能都是自動(dòng)實(shí)現的。
頁(yè)面增加了一條新的*敏*感*詞*,對應的Student表也多了一條記錄,這個(gè)持久化過(guò)程完全由框架完成。
雖然 Erupt 框架對前后端代碼進(jìn)行了深度封裝,但它提供了豐富靈活的自定義接口來(lái)滿(mǎn)足我們的個(gè)性化需求。
比如我們在輸入新的*敏*感*詞*的時(shí)候,想要屏蔽張三同學(xué),我們可以為頁(yè)面按鈕功能代理dataProxy實(shí)現自定義邏輯,為哪個(gè)按鈕代理實(shí)現相應的方法,比如beforeAdd和afterAdd 是對按鈕添加代理。
@Getter
@Setter
@Erupt(name?=?"學(xué)生表",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("名稱(chēng)禁止為張三!");
????????}
????}
????@Override
????public?void?afterAdd(Student?student)?{
????}
????@Override
????public?void?afterUpdate(Student?student)?{
????}
????@Override
????public?void?afterDelete(Student?student)?{
????}
?}
當我們在頁(yè)面輸入一個(gè)叫張三的同學(xué)時(shí),就被成功屏蔽了。類(lèi)似的功能還有很多,這里就不舉例了??次臋n看文檔~
如果我們想用傳統的方式開(kāi)發(fā)接口,不用擔心與 Erupt 的頁(yè)面生成規則沖突,完全不會(huì )受到影響。而且,Erupt 內部集成了 JPA,并提供了現成的 dao 接口。您可以通過(guò)調用相應的 API 來(lái)開(kāi)始開(kāi)發(fā)。
不想手工寫(xiě)Java代碼也沒(méi)關(guān)系,Erupt也提供了代碼*敏*感*詞*,可以自定義Java類(lèi)名和字段名,可以生成代碼,直接復制就好。
說(shuō)到這里,我只介紹了 Erupt 的基本特性,主要是讓朋友知道有這么敏捷的工具。
不僅如此,它還支持豐富的數據類(lèi)型,內置定時(shí)任務(wù)管理、多表聯(lián)合查詢(xún)、前后端分離部署、接口權限、操作記錄、多數據源、郵件等功能系統、黑白名單等。調用API即可使用。
至此,相信大家對“如何搭建Java管理系統”有了更深入的了解,那么就來(lái)試一試吧!這里是易速云網(wǎng)站,更多相關(guān)內容可在相關(guān)頻道查詢(xún),關(guān)注我們,繼續學(xué)習!