在專案開發當中,很多軟體架構都會做一些物件上的資料轉換

最常見的是,往往我們會需要把 Entity 的物件轉換成對應的 DTO 物件給前端

最簡單也最常見的寫法就是依序把 Entity 的 value 用 get method 取出來用再用 DTO 物件的 set method 把資料塞進去

但其實有時候寫著寫著也是覺得很麻煩,也挺累的,有時候寫起來程式也臭臭長長的看了就討厭

所以今天要介紹的是使用 MapStruct 這個工具來幫我們快速地進行資料上的轉換,以加快我們的開發速度

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

Java - 解壓縮 (unzip),並寫一個單元測試進行測

接著我們寫一個單元測試來測試一下功能是否正確

先準備一個 test.zip,其中 test.zip 包含以下檔案: 

1. 一個文字檔名稱叫做 testfile.txt 文字檔 (內容不重要)

2. 一個資料夾名稱叫做 folder,這個 folder 放置一個檔案 infolderfile.txt 文字檔 (內容不重要)

並將這個準備好的測試檔案放到Spring Boot 專案 src/test/resources 的路徑下

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

Java - 只給起訖年月時間(yyyy/MM),如何判斷是

需求為當我們只有開始與結束的年月時間,時間格式為yyyy/MM,例如 2023/09 ~ 2023/12

我們想要知道這個起訖時間是否為有限時間,意思是說開始時間是否已經生效,是不是已經超過結束時間 (過期)

如果已經生效並且還沒過期,就為有效時間

舉例來說: 撰寫文章的現在是 2023年10月

以剛剛的例子來說,開始時間為 2023/09,結束時間為 2023/12,

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

init dependency.png

這篇文章會介紹如從零開始一步一步透過使用 Spring Security 來實作登入、認證、角色權限等機制

所有程式碼可以到我的 GitHub 查看: https://github.com/lakesd6531/springsecurity

Dependency

建立 Spring boot project

這次的範例是使用 spring boot 3.0.5 版本,java 17

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

SpringBoot3 + Swagger

由於上次分享在Spring Boot 專案當中加入Swagger (點選進入到該連結看更多詳細說明)

當時分享時還停留在 Spring Boot 2.x 版本

不過最近 Spring Boot 更新至 3.x 版本後,我發現按照上次分享的方式去設定

會無法正常啟用 Swagger,因此今天再來分享與紀錄,在 SpringBoot 3.x 應該如何去設定並啟用 Swagger

簡單說明一下環境規格

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

1.png

後端在開發 API 的時候,可以透過 Swagger 來測試 API

而Swagger也可以做為前後端開發團隊的一份 Rest API 文件

Swagger 是一套方常方便的 API 工具

除了可以省下寫額外寫 API 文件的時間,在寫程式的時候,就一邊建置文件了

也可以透過 Swagger 的 web UI 介面來進行執行與測試 API,不需要額外再使用像是Postmen、API Tester等工具來測試API

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

1.png

以下是一個簡單的 REST API 實作的簡單範例

在 StudentController 當中建立一個 Post 的 REST API 介面

透過這個Post Request 來新增一個學生的資料,這邊是以簡單示範,故沒有實作資料做存取的部分,收到 request 後就回一個字串的訊息以表達新增資料

其中@RequestBody則是我們帶進來的請求參數,其Student物件如下所示

學生的資料包含學號和姓名

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

1.png

如上圖所示,我們在資料表中有一個description欄位,

我們希望能夠利用SQL一次性的找到所有在table的description欄位中每一筆資料包含"這是來自"的關鍵字,取代成"國外進口從"

那就可以利用以下語法來完成

UPDATE 資料表名稱 SET 欄位名稱 = REPLACE ( 欄位名稱 , 被取代值, 要取代值 )

如我們的需求,我們需要將SQL語法改成:

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

1.png

水晶礦石從開採、到加工、到販售,這過程中不知道經歷過多少人的手,所以拿到水晶時建議把水晶進行消磁淨化一下。

此外,你可以把你的水晶、天珠、瑪瑙、或是木藝品,想像成是一顆電池,隨著你的配戴,它的電量會慢慢耗盡
因此我們也需要適時地將水晶與礦石進行消磁淨化,這可以想像成是電量耗盡,需要充電的意思

天然的水晶與礦石生長於大自然中,如果將療癒石放回大自然之中,就能夠恢復原本的能量頻率

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

1.png

過去在Sping框架中,我們都會習慣使用@Autowired的註解來注入一個Bean,如下

但是使用@Autowired的時候會發現IDE在註解下面出現黃黃的警告,

展開警告的詳細內容,可以看到上面寫著: "Field injection is not recommended "

也就是不建議使用欄位注入的方式

這邊引用了參考文章的解釋如下:

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

1.png

繼上篇 在Spring Boot 使用Lombok - @Getter、@Setter、@Data

今天這篇文章主要來介紹其餘較為常用的annotation

分別是@RequiredArgsConstructor、@NoArgsConstructor、@AllArgsConstructor

這三個都是用來自動產生contructor,差別在於他們所帶的參數不一樣

@RequiredArgsConstructor

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

product model.png

過去我們在開發程式的時候,當我們要建立一些modle class, 像是entity, DTO, data class...

如下我們要建立一個Product class,並且建立該產品物件所需要的變數

因為物件導向設計的原則因素,我們必須將變數設定成private

因此當我們需要讓別的程式能夠去存取該物件的話,我們就得需要開放get, set的介面供client使用, 如下

雖然現在的IDE都提供了非常方便的建立這些getter, setter的方法

Mark Zhang 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。