1. 程式人生 > >JavaEE開發之記事本完整案例(SpringBoot + iOS端)

JavaEE開發之記事本完整案例(SpringBoot + iOS端)

在後端實現時,路由以及資料格式我們都採用之前的規則,但是我們要用Spring Boot來做。當然操作資料庫時,我們就使用MyBatis來進行資料的持久化了。本篇我們就來看一下這個Spring Boot完整的工程。當然,本篇部落格所設計的Spring Boot是比較簡單的,但是用來練手可以了。

本篇部落格所涉及的功能無非就是一些資料庫表的CURD操作,沒有什麼多難的地方。接下來就來整體的看一下這個工程。

一、執行效果展示

下方這個Gif效果圖,就是我們本篇部落格所涉及的完整案例的執行效果。單從下方的效果,我們看不出與之前有什麼效果,因為我們的iOS端沒有改變。但是下方App的後臺確實是使用Spring Boot來實現的。

第一個頁面讓使用者輸入使用者名稱,如果使用者名稱存在,那麼就讓使用者輸入密碼進行登入,如果不存在就讓使用者進行註冊。登入或者註冊後直接進入App的首頁,也就是筆記的列表頁面。該列表頁顯示了當前使用者釋出的所有筆記,包括筆記的Title和建立時間。點進去是該筆記的詳情頁面,可以對其更改操作。在列表的右上角有一個新增按鈕,可以用來新增新的筆記。

在列表頁中,左滑單元格,會出現刪除按鈕,點選刪除按鈕,則對該篇筆記進行刪除操作。具體執行效果如下所示。

  

二、MyBatis的Mapper實現

關於Spring Boot中如何引入和配置MyBatis,在此就不做過多贅述了,你可以參見上篇部落格。當然,上述Demo的核心操作就是資料庫的CURD操作,當然,我們使用的是Spring Boot下的Mybatis來進行的資料持久化,所以MyBatis的使用是比較重要的。本部分就詳細的聊一下本篇部落格所涉及的MyBatis的Mapper

。下方先給出操作使用者user表的Mapper, 然後在介紹操作內容content表的Mapper。

1. UserMapper的實現

下方程式碼段是UserMappper的具體實現,首先使用@Mapper註解將UserMapper介面宣告為MyBatisMapper。然後在其中給出相應的操作宣告。在UserMapper中主要給出了兩個Select操作和一個Insert操作。

在執行Select時,使用了#{引數}來往SQL語句中傳入相應的查詢條件,使用了@Results()註解來宣告表字段與資料Model的屬性間的對應關係。如果沒有指定,那麼預設情況下表欄位名就等於Model的屬性名。查詢語句返回的是含有相應Model的ArrayList

我們使用@Insert()註解來指定插入語句,並且使用@Param註解和#{}來繫結引數。具體如下所示。

  

2、INoteContentMapper的實現

看完UserMapper後,我們來看一下INoteContentMapper的具體實現。INoteContentMapper就負責操作Content表。下方截圖是INoteContentMapper具體實現,其中多了兩個操作,一個是使用@Delete註解宣告的刪除操作,另一個是使用@Update註解宣告的更新操作。下方的實現也是比較簡單的在此就不做過多贅述了。

  

三、DAO層的建立

看完相關的Mapper接下來我們來看一下DAO層的實現,DAO即Data Access Object,主要是負責操作物件的。我們就以ContentDao為例。下方程式碼段就是ContentDao中的具體實現。在該類中被注入了INoteContentMapper型別的物件,我們可以使用該物件來操作資料庫。

我們就以queryContent(String contentId)為例,該方法中就呼叫了相應Mapper物件的相應方法,根據內容的id來查詢相應的內容。而該類中的方法,在獲取到相應的物件資訊後,對該物件進行了相關操作,並返回。具體程式碼如下所示。

  

四、Controller層的實現

DAO層實現完畢後,接下來我們就來實現我們的Controller層。當然,我們還是以Content的Controller層為例。因為我們的Controller是作為介面也就是API對外使用的,所以我們將ContentRestController使用@RestController進行註解,這樣我們之間將返回的報文內容進行返回即可。下方程式碼片段就是我們的ContentRestController中的實現內容。

首先我們要注入ContentDao的物件,然後在相應的路由所對應的方法中來呼叫DAO中的相應的方法。雖然我們返回的是Map型別,但是Spring Boot會為我們自動的轉換成Json格式的資料,所以訪問該API返回的都是JSON格式的資料。 

  

我們可以對“/contentList”路由進行訪問,該路由需要提供一個userId作為查詢引數,下方截圖就是對userId=1的使用者下的所有List進行的查詢。

  

今天部落格就先介紹到這兒吧,下方是本篇部落格所涉及Demo的原始碼分享連結。