最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

3分鐘純 Java 注解搭個(gè)管理系統(tǒng)的示例代碼

 更新時(shí)間:2021年03月29日 10:59:18   作者:程序員內(nèi)點(diǎn)事  
這篇文章主要介紹了3分鐘純 Java 注解搭個(gè)管理系統(tǒng)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

最近接觸到個(gè)新項(xiàng)目,發(fā)現(xiàn)它用了一個(gè)比較有意思的框架,可以說(shuō)實(shí)現(xiàn)了我剛?cè)胄袝r(shí)候的夢(mèng)想,所以這里馬不停蹄的和大家分享下。

在我剛開始工作接觸的項(xiàng)目都還沒做前后端分離,經(jīng)常需要后端來(lái)維護(hù)頁(yè)面,有時(shí)候覺得自己好像天生不適合干前端,你要是讓我研究研究后端的技術(shù),看個(gè)中間件源碼啊,分析分析什么框架底層原理啊,這都問題不大,偶爾搞一下JS也可以。你要是讓我寫個(gè)css樣式,那簡(jiǎn)直要命了,一點(diǎn)也提不起興趣,不知道有沒有跟我一樣的。

今天要介紹的框架直接不用寫頁(yè)面了,話不多說(shuō),下邊咱們直奔主題

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

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

首先來(lái)搭建一下環(huán)境,目前Erupt支持Java版本1.8.0及以上、Spring Boot版本2.0及其以上。

搭建easy

pom.xml引入必要的jar

 <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!--用戶權(quán)限管理-->
    <dependency>
      <groupId>xyz.erupt</groupId>
      <artifactId>erupt-upms</artifactId>
      <version>1.6.7</version>
    </dependency>
    <!--接口數(shù)據(jù)安全-->
    <dependency>
      <groupId>xyz.erupt</groupId>
      <artifactId>erupt-security</artifactId>
      <version>1.6.7</version>
    </dependency>
    <!--后臺(tái)WEB界面-->
    <dependency>
      <groupId>xyz.erupt</groupId>
      <artifactId>erupt-web</artifactId>
      <version>1.6.7</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>compile</scope>
    </dependency>
  </dependencies>

application.yml 文件只要簡(jiǎn)單配置數(shù)據(jù)源就好,提前準(zhǔn)備個(gè)數(shù)據(jù)庫(kù),說(shuō)到數(shù)據(jù)庫(kù)這里我說(shuō)個(gè)小插曲。

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

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

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

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)題外話,我們繼續(xù)搞起~

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

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

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

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

System.getProperty("user.dir")

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

緊接著我們?cè)L問http://127.0.0.1:8888/,看一下是個(gè)什么效果,竟然有個(gè)完整的登錄頁(yè)面。

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

有趣的頁(yè)面

那么問題來(lái)了?想要自定義頁(yè)面怎么辦?

開篇我們就說(shuō)過(guò)erupt是零前端代碼,全部基于Java注解開發(fā)的,接下來(lái)用Java注解寫個(gè)簡(jiǎn)單頁(yè)面體驗(yàn)下。

erupt有兩個(gè)核心注解@Erupt,@EruptField

  • @Erupt注解修飾類,代表定義一個(gè)頁(yè)面
  • @EruptField注解修飾字段,代表頁(yè)面上顯示的字段名
  • @Power注解控制是否操作按鈕,增、刪、改、查、導(dǎo)入、導(dǎo)出等@Search注解表示字段為搜索條件
  • @Table注解表示頁(yè)面取數(shù)據(jù)對(duì)應(yīng)的表,如果不設(shè)置,頁(yè)面第一次初始化的時(shí)候,會(huì)根據(jù)類字段值自動(dòng)創(chuàng)建一張和類名一致的表名。

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

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

/*
 * @Erupt注解修飾在類上,@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 = "所屬班級(jí)"),
      edit = @Edit(title = "所屬班級(jí)", 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)做一個(gè)映射關(guān)系,在菜單維護(hù)中自定義個(gè)菜單,類型值一定要為新建的 類名 Student

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

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

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

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

@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<Student> {

  @Override
  public void beforeAdd(Student student) {
    //后臺(tái)字段校驗(yàn)
    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) {
  }
 }

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

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

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

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

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

說(shuō)在后邊

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

因?yàn)樗纳疃确庋b雖然讓開發(fā)變的簡(jiǎn)單高效,可對(duì)于業(yè)務(wù)相對(duì)復(fù)雜、高度定制的系統(tǒng)來(lái)說(shuō),Erupt 框架顯得力不從心,更關(guān)鍵的一點(diǎn),它的社區(qū)并不算特別活躍,畢竟是個(gè)小眾框架。

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

到此這篇關(guān)于3分鐘純 Java 注解搭個(gè)管理系統(tǒng)的示例代碼的文章就介紹到這了,更多相關(guān)Java 注解搭個(gè)管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot返回html和jsp的方法示例

    springboot返回html和jsp的方法示例

    這篇文章主要介紹了springboot返回html和jsp的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 教您如何3分鐘快速搞定EasyExcel導(dǎo)入與導(dǎo)出功能

    教您如何3分鐘快速搞定EasyExcel導(dǎo)入與導(dǎo)出功能

    對(duì)于EasyExcel庫(kù),我們可以使用它來(lái)實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入和導(dǎo)出,下面這篇文章主要給大家介紹了關(guān)于如何3分鐘快速搞定EasyExcel導(dǎo)入與導(dǎo)出功能的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java中的NoClassDefFoundError報(bào)錯(cuò)含義解析

    Java中的NoClassDefFoundError報(bào)錯(cuò)含義解析

    這篇文章主要為大家介紹了Java中的NoClassDefFoundError含義詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-11-11
  • SpringBoot+SpringSecurity+jwt實(shí)現(xiàn)驗(yàn)證

    SpringBoot+SpringSecurity+jwt實(shí)現(xiàn)驗(yàn)證

    本文主要介紹了SpringBoot+SpringSecurity+jwt實(shí)現(xiàn)驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java中的Semaphore信號(hào)量使用解析

    Java中的Semaphore信號(hào)量使用解析

    這篇文章主要介紹了Java中的Semaphore信號(hào)量使用解析,Semaphore 通常我們叫它信號(hào)量,可以用來(lái)控制同時(shí)訪問特定資源的線程數(shù)量,通過(guò)協(xié)調(diào)各個(gè)線程,以保證合理的使用資源,需要的朋友可以參考下
    2023-11-11
  • MyBatis中動(dòng)態(tài)sql的實(shí)現(xiàn)方法示例

    MyBatis中動(dòng)態(tài)sql的實(shí)現(xiàn)方法示例

    這篇文章主要給大家介紹了關(guān)于MyBatis中動(dòng)態(tài)sql的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 雙Token無(wú)感刷新機(jī)制實(shí)現(xiàn)方式

    雙Token無(wú)感刷新機(jī)制實(shí)現(xiàn)方式

    本文介紹了如何在Vue.js前端和Java后端實(shí)現(xiàn)雙Token的無(wú)感刷新機(jī)制,后端通過(guò)Jwt過(guò)濾器解析Token,前端在請(qǐng)求時(shí)攜帶Token并保存,當(dāng)Token過(guò)期時(shí),前端會(huì)自動(dòng)刷新并重新發(fā)送請(qǐng)求,實(shí)現(xiàn)無(wú)感刷新
    2025-03-03
  • java常用API介紹之包裝類

    java常用API介紹之包裝類

    這篇文章主要介紹了java常用API介紹之包裝類,API,即Application Programming Interface,中文名稱是“應(yīng)用程序接口",這些接口就是"jdk所提供"給我們使用的類,需要的朋友可以參考下
    2023-04-04
  • 基于springMvc+hibernate的web application的構(gòu)建

    基于springMvc+hibernate的web application的構(gòu)建

    下面小編就為大家?guī)?lái)一篇基于springMvc+hibernate的web application的構(gòu)建。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • JAVA十大排序算法之選擇排序詳解

    JAVA十大排序算法之選擇排序詳解

    這篇文章主要介紹了java中的選擇排序,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

玛纳斯县| 尼木县| 临武县| 鄂托克前旗| 西安市| 顺义区| 山阳县| 龙游县| 云南省| 阿坝县| 平山县| 米易县| 剑河县| 云南省| 佛教| 维西| 晋城| 凭祥市| 汉寿县| 海丰县| 大荔县| 禹城市| 日照市| 交城县| 青海省| 远安县| 依兰县| 桐乡市| 伊金霍洛旗| 宝兴县| 确山县| 井研县| 云林县| 娄底市| 宿州市| 法库县| 桂林市| 宣武区| 浪卡子县| 宜宾市| 蒙山县|