RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

3分鐘純Java注解搭個管理系統(tǒng)

jf_ro2CN3Fa ? 來源:程序員小富 ? 2023-07-28 11:27 ? 次閱讀

Erupt一個通用后臺管理框架,據(jù)說有 超低代碼量 、 零前端代碼 、零 CURD操作無需建表 ,Java注解開發(fā) 等特色,號稱三分鐘就可以搭建一個完整的后臺管理系統(tǒng)。

額~ 聽著好像還挺流批的,到底是不是有這么魔幻,咱們一起用起來感受下。

首先來搭建一下環(huán)境,目前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 文件只要簡單配置數(shù)據(jù)源就好,提前準(zhǔn)備個數(shù)據(jù)庫,說到數(shù)據(jù)庫這里我說個小插曲。

我之前在Github 提交案例代碼的時候,由于沒太注意沒屏蔽敏感信息,導(dǎo)致云數(shù)據(jù)庫賬號泄露了,最近我發(fā)現(xiàn)已經(jīng)有小伙伴在數(shù)據(jù)庫上跑項目了,仔細(xì)看了看里邊的數(shù)據(jù)結(jié)構(gòu),發(fā)現(xiàn)像是個畢設(shè)項目。

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

本身這個庫就是我跑demo案例的一個測試庫,為的就是讓小伙伴能把更多時間放在研究案例的技術(shù)點上,減少搭建環(huán)境這種沒技術(shù)含量的瑣碎事。

發(fā)現(xiàn)歸發(fā)現(xiàn),這里我沒改密碼,也沒刪他們的庫,如果你要用就繼續(xù)用著,但玩歸玩,鬧歸鬧,你不能亂動不是你的數(shù)據(jù) !影響其他人學(xué)習(xí)就不好了。

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

說了點題外話,我們繼續(xù)搞起~

其實到這Erupt的環(huán)境就搭建完了,額~ ,這就完了?

咱們什么也沒干,項目是個空殼子,一行代碼也沒寫,好像連個表也沒建?。?/p>

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

別著急咱們先啟動下項目,看到控制臺打印出很多建表語句和插入語句,這是因為Erupt框架底層應(yīng)用JPA持久化,預(yù)置創(chuàng)建了一些系統(tǒng)表和數(shù)據(jù)。

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

注意 :Erupt預(yù)置表只會隨項目第一次啟動構(gòu)建一次,如果想重新創(chuàng)建,需刪除.Erupt文件(一般在項目的工作空間內(nèi)),獲取文件位置方式

System.getProperty("user.dir")

再看數(shù)據(jù)庫里創(chuàng)建了16張系統(tǒng)表,其中e_upms_user表是用戶表,默認(rèn)只有一個管理員賬號,用戶名、密碼都是erupt。

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

緊接著看一下是個什么效果,竟然有個完整的登錄頁面。

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

用上邊的用戶名、密碼直接登錄,erupt已經(jīng)預(yù)先實現(xiàn)了完整的權(quán)限控等功能,而到這我們幾乎是沒寫過什么代碼的,都是框架封裝好了的,菜單類數(shù)據(jù)全部從數(shù)據(jù)庫動態(tài)獲取,一個基礎(chǔ)的后臺管理系統(tǒng)就搭建完了,有點哇塞。

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

有趣的頁面

那么問題來了?想要自定義頁面怎么辦?

開篇我們就說過erupt是零前端代碼,全部基于Java注解開發(fā)的,接下來用Java注解寫個簡單頁面體驗下。

erupt`有兩個核心注解`@Erupt`,`@EruptField

@Erupt注解修飾類,代表定義一個頁面

@EruptField注解修飾字段,代表頁面上顯示的字段名

@Power注解控制是否操作按鈕,增、刪、改、查、導(dǎo)入、導(dǎo)出等

@Search注解表示字段為搜索條件

@Table注解表示頁面取數(shù)據(jù)對應(yīng)的表,如果不設(shè)置,頁面第一次初始化的時候,會根據(jù)類字段值自動創(chuàng)建一張和類名一致的表名。

注解類型比較多,不一一列舉了,更多的自己到官網(wǎng)瞅:https://www.erupt.xyz

下邊我們定義一個Student類,加上@Erupt,@EruptField注解,這樣頁面和元素就算寫完了,是不是有點顛覆認(rèn)知。

/*
*@Erupt注解修飾在類上,@EruptField注解修飾在字段上
*其他注解均為Jpa注解
*/
@Getter
@Setter
@Erupt(name="學(xué)生表",
power=@Power(importable=true,export=true)
)
@Entity
//@Table(name="t_student")
publicclassStudentextendsBaseModel{

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

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

@EruptField(
views=@View(title="學(xué)生年齡"),
edit=@Edit(title="學(xué)生年齡",notNull=true)
)
privateStringstudentAge;

@Lob
@EruptField(
views=@View(title="學(xué)生性別"),
edit=@Edit(title="學(xué)生性別",notNull=true)
)
privateStringstudentSex;

@EruptField(
views=@View(title="考核狀態(tài)"),
edit=@Edit(title="考核狀態(tài)",notNull=true,boolType=@BoolType(trueText="通過",falseText="掛科"),search=@Search)
)
privateBooleanstatus;
}

但此時新創(chuàng)建的頁面不會顯示出來,還需要我們手動做一個映射關(guān)系,在菜單維護中自定義個菜單,類型值 一定要為新建的 類名 Student。

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

保存刷新后會看到我們的新頁面出現(xiàn)了,而且頁面的功能很完整,基礎(chǔ)操作、查詢、導(dǎo)入、導(dǎo)出功能都自動實現(xiàn)了。

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

頁面新增一個學(xué)生信息,對應(yīng)的Student表也多了條記錄,而這個持久化的過程完全由框架來做。

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

盡管Erupt 框架對前后端代碼做了深度封裝,但它提供了豐富靈活的自定義接口,來滿足我們的個性化需求。

比如我們在錄入新學(xué)生信息時,希望屏蔽名字為張三的同學(xué),可以對頁面按鈕功能做代理dataProxy,實現(xiàn)自定義的邏輯,對哪個按鈕代理就實現(xiàn)對應(yīng)方法即可,如beforeAdd、afterAdd是對新增按鈕的代理。

@Getter
@Setter
@Erupt(name="學(xué)生表",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){
}
}

當(dāng)我們在頁面錄入名字為張三的同學(xué)時,成功屏蔽。其他類似的功能還有很多,這里就不一一舉例了,看文檔看文檔~

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

如果我們想要按傳統(tǒng)的方式開發(fā)接口,不用擔(dān)心會和Erupt的頁面生成規(guī)則有沖突,絲毫不會受影響。而且Erupt內(nèi)部集成了JPA,提供了現(xiàn)成的dao接口,只要調(diào)用對應(yīng)API即可上手開發(fā)。

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

如果你不想手寫Java代碼也沒關(guān)系,Erupt還提供了代碼生成器,自定義Java類名和字段名,可以生成代碼,直接copy就行了。

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

說到這我只介紹了Erupt一丟丟的基礎(chǔ)特性,主要是想讓小伙伴知道有這么個敏捷利器。

不僅如此它還支持豐富的數(shù)據(jù)類型,內(nèi)置了像定時任務(wù)管理、多表聯(lián)合查詢、前后端分離部署、接口權(quán)限、操作記錄、多數(shù)據(jù)源、郵件系統(tǒng)、黑白名單等等很多實用功能,都直接調(diào)用API就可以用。

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

說在后邊

Erupt 框架的優(yōu)點是顯而易見的,快捷、高效、上手容易,對新手相當(dāng)?shù)挠押茫趯嶋H生產(chǎn)環(huán)境中我只是用它來做一些配置字典類的數(shù)據(jù)管理。

因為它的深度封裝雖然讓開發(fā)變的簡單高效,可對于業(yè)務(wù)相對復(fù)雜、高度定制的系統(tǒng)來說,Erupt 框架顯得力不從心,更關(guān)鍵的一點,它的社區(qū)并不算特別活躍,畢竟是個小眾框架。

不過,技術(shù)從來都是服務(wù)于業(yè)務(wù)的,如果你的業(yè)務(wù)與Erupt的氣質(zhì)相匹配,別猶豫,用它!





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA語言
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    20090
  • 代碼生成器
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    9118
  • API接口
    +關(guān)注

    關(guān)注

    1

    文章

    84

    瀏覽量

    10437

原文標(biāo)題:干掉前端!3分鐘純 Java 注解搭個管理系統(tǒng),我直接好家伙

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何通過注解來優(yōu)化我們的Java代碼

    Java注解可以說是我們編碼過程中最常用的。本篇文章將給大家介紹Java注解的概念、作用以及如何使用注解來提升代碼的可讀性和靈活性,并介紹如
    的頭像 發(fā)表于 09-30 11:39 ?631次閱讀

    java學(xué)生信息管理系統(tǒng)

    java學(xué)生信息管理系統(tǒng)
    發(fā)表于 10-03 14:47

    java&Android小白求救

    ,對java、Android純粹不懂,想請教下各位java、Android行業(yè)的前輩們,我這種小白,有戲嗎?請大家給小弟支幾招吧,跪求。
    發(fā)表于 10-27 15:48

    詳細(xì)介紹了Java泛型、注解、并發(fā)編程

    介紹了Java泛型、注解、并發(fā)編程、數(shù)據(jù)傳輸與序列化、高效IO、容器集合、反射與類加載以及JVM重點知識線程、內(nèi)存模型、JVM運行時內(nèi)存、垃圾回收與算法、Java中四種引用類型、GC
    發(fā)表于 08-20 06:09

    怎么實現(xiàn)基于java的土地檔案管理系統(tǒng)設(shè)計?

    怎么實現(xiàn)基于java的土地檔案管理系統(tǒng)設(shè)計?
    發(fā)表于 09-18 06:41

    HarmonyOS注解的使用方法分享

    定義我們的注解自定義注解1、聲明注解功能:檢測類中是否有規(guī)范的get方法新建java libray的module,命名為annotation,創(chuàng)建
    發(fā)表于 03-28 14:04

    3分鐘到4小時定時器

    3分鐘到4小時定時器:電路原理詳見電路圖。
    發(fā)表于 12-13 22:20 ?1875次閱讀
    <b class='flag-5'>3</b><b class='flag-5'>分鐘</b>到4小時定時器

    分析java注解基本概念

    什么是注解(Annotation): Annotation(注解)就是Java提供了一種元程序中的元素關(guān)聯(lián)任何信息和著任何元數(shù)據(jù)(metadata)的途徑和方法。Annotion(注解
    發(fā)表于 09-27 14:53 ?0次下載

    基于Java EE的車輛管理系統(tǒng)設(shè)計

    為了對集團公司的所有車輛進行集中管理,提出了一種基于Java EE體系架構(gòu)的車輛管理系統(tǒng)的設(shè)計方案,并完成了詳細(xì)的設(shè)計。系統(tǒng)主要采用Spri
    發(fā)表于 12-07 10:42 ?0次下載
    基于<b class='flag-5'>Java</b> EE的車輛<b class='flag-5'>管理</b><b class='flag-5'>系統(tǒng)</b>設(shè)計

    注解定義Bean及開發(fā)

    注解本質(zhì)是一個繼承了Annotation 的特殊接口,其具體實現(xiàn)類是Java 運行時生成的動態(tài)代理類。
    發(fā)表于 08-02 10:26 ?440次閱讀

    Springboot常用注解合集

    前幾章,在系統(tǒng)啟動類里面,都加入了此啟動注解,此注解是個組合注解,包括了`@SpringBootConfiguration`、`@EnableAutoConfiguration`和`@
    的頭像 發(fā)表于 04-07 14:27 ?730次閱讀
    Springboot常用<b class='flag-5'>注解</b>合集

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

    。它可以聲明在包、類、字段、方法、局部變量、方法參數(shù)等的前面,用來對這些元素進行說明,注釋。那么你知道JDK什么是元注解嗎?注解有哪些分類嗎?以及注解Java中最本質(zhì)究竟是什么東西,
    的頭像 發(fā)表于 05-11 10:57 ?639次閱讀

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

    。它可以聲明在包、類、字段、方法、局部變量、方法參數(shù)等的前面,用來對這些元素進行說明,注釋。那么你知道JDK什么是元注解嗎?注解有哪些分類嗎?以及注解Java中最本質(zhì)究竟是什么東西,
    的頭像 發(fā)表于 05-11 10:57 ?565次閱讀
    <b class='flag-5'>JAVA</b>中<b class='flag-5'>注解</b>是怎么做到的(下)

    3分鐘了解ePort關(guān)鍵設(shè)計技巧

    ePort-M模塊到手,通信接口不了解?TX線需要串接電阻?信號線不懂處理、走線麻煩?3分鐘帶你了解ePort關(guān)鍵設(shè)計技巧,輕松上手!
    的頭像 發(fā)表于 05-29 12:00 ?900次閱讀
    <b class='flag-5'>3</b><b class='flag-5'>分鐘</b>了解ePort關(guān)鍵設(shè)計技巧

    springmvc常用5種注解

    SpringMVC是一種基于Java的Web框架,使用注解可以更加方便靈活地開發(fā)和管理控制器,實現(xiàn)請求的映射和處理。在SpringMVC中,有許多常用的注解,本文將詳細(xì)介紹其中的五種
    的頭像 發(fā)表于 11-22 16:51 ?884次閱讀
    RM新时代网站-首页