SpringBoot和SpringDataJPA-第三章

前面2個章節(jié)我們簡單講解了SpringBoot的操作簡單性,SpringBoot框架內(nèi)部提供了很多我們需要用到的組件,需要什么你就可以拿到項目里。

在我們平時的項目中,數(shù)據(jù)的存儲以及訪問都是最為核心的關鍵部分,現(xiàn)在有很多企業(yè)采用主流的數(shù)據(jù)庫,如關系型數(shù)據(jù)庫:MySQL數(shù)據(jù)庫,oracle數(shù)據(jù)庫,sqlserver數(shù)據(jù)庫。非關系型數(shù)據(jù)庫:redis,mongodb等。

SpringBoot已經(jīng)為我們提供了很多種的數(shù)據(jù)庫來做數(shù)據(jù)存儲以及讀取,上面只是簡單的幾種,那么我接下來以MySQL數(shù)據(jù)庫為例來講述下本章的內(nèi)容。

注意:我們學習的章節(jié)都是按照步驟來的,后面添加的jar和前面所學章節(jié)jar同時存在,不然項目會報錯。我就不在后面章節(jié)再寫前面的jar引入了。

本章目標

? ? ?學習并且使用SpringBoot訪問MySQL數(shù)據(jù)庫,并且結合SpringDataJPA完成CRUD(Create,Read,Update,Delete)簡單操作。

一、配置SpringBoot對SpringDataJPA的支持

首先我們需要連接數(shù)據(jù)庫MySQL,理所當然,導入MySQL的jar,如圖一

圖一

接下來要導入和SpringJPA的支持,還需要引入一個JSON的jar包,如圖二所示:


圖二

接下來我們引入一個阿里巴巴的一個fastjson的jar包,如圖三所示:

圖三

上圖的注釋是我添加的,項目默認創(chuàng)建完成后是沒有注釋的。

注意:如果使用內(nèi)部tomcat運行項目需要將spring-boot-starter-tomcat的scope標簽注釋掉。

配置數(shù)據(jù)源以及JPA

今后我們修改application.properties文件配置為application.yml配置。.yml配置文件與.properties配置要更清晰更有層次感,可以很明了的看懂配置信息,但2個文件可以同時存在。Springboot會自動掃描。

我們在resources目錄下創(chuàng)建application.yml文件,并且配置DataSource以及JPA,如下圖四所示:


圖四

可以看到上述配置文件內(nèi),我們使用了本地的一個mysql數(shù)據(jù)庫,mysql數(shù)據(jù)庫是我們是先安裝好的,并且創(chuàng)建了一個名叫gateway-manage的數(shù)據(jù)庫,JPA的配置了show-sql用來在控制臺輸出JPA自動生成的sql語句。

上述數(shù)據(jù)配置文件已經(jīng)完成,接下來我們新建數(shù)據(jù)庫測試表結構我使用的數(shù)據(jù)庫工具是Navicat Premium打開,大家可自行下載或者使用其他工具,結構如下圖5所示:


圖五

一、創(chuàng)建實體

接下來我們開始編寫實體,我們采用@Table注解來編寫一個實體類,如下圖6所示:

圖六

二、創(chuàng)建接口,創(chuàng)建JPA

實體類我們也已經(jīng)創(chuàng)建完成了,那么接下來我們需要使用SpringDataJPA來完成數(shù)據(jù)庫持久化操作,我們新建名字叫做dao的package,然后創(chuàng)建UserJPA接口并且繼承SpringDataJPA內(nèi)的接口作為父類,接下來我們來編寫SpringDataJPA的實現(xiàn)的Dao層,如圖七所示:

圖七

我們UserJPA繼承了JpaRepository接口(SpringDataJPA提供的簡單數(shù)據(jù)操作接口)、JpaSpecificationExecutor(SpringDataJPA提供的復雜查詢接口)、Serializable(序列化接口)。

我們并不需要做其他的任何操作了,因為SpringBoot以及SpringDataJPA會為我們?nèi)扛愣?,SpringDataJPA內(nèi)部使用了類代理的方式讓繼承了它接口的子接口都以spring管理的Bean的形式存在,也就是說我們可以直接使用@Autowired注解在spring管理bean使用,如下圖八所示:


圖八

到這一步我們的數(shù)據(jù)庫層幾乎已經(jīng)編寫完成了,那么我們需要編寫控制器讓我們通過頁面可以訪問到數(shù)據(jù)。

編寫查詢方法

? ? ? ?我們接著看UserController中,然后創(chuàng)建一個查詢用戶列表的方法,如下圖9所示:

圖九

? ? 注:其中userJps.findAll()方法就是SpringDataJPA為我們提供的內(nèi)置方法,它可以查詢表內(nèi)所有的數(shù)據(jù),除了findAll還有很多有用的方法。

編寫新增/更新方法


圖10

? ? 注:圖10上述操作是完成數(shù)據(jù)庫持久化操作,也是SpringDataJPA提供的內(nèi)置方法,save方法可以執(zhí)行添加也可以執(zhí)行更新,如果需要執(zhí)行持久化的實體存在主鍵值則更新數(shù)據(jù),如果不存在則添加數(shù)據(jù)。

編寫刪除方法


圖11

? 圖11 我們刪除完用戶后直接返回了查詢所有用戶列表,可以查看到用戶是否已經(jīng)刪除成功。這樣我們只剩下最后一步操作了。


運行項目

圖12

? ? 上述圖片紅色部分表示我們已經(jīng)加載了我們寫的方法。那么我們嘗試訪問用戶列表路徑:127.0.0.1:8080/user/list可以看到如下圖13所示,之前我因為添加了幾條數(shù)據(jù),結果我們?nèi)鐖D13所示


圖13

? ? 注:其他的操作我就不在這里一一運行了,就靠大家自己去測試了。

總結

上述內(nèi)容就是我們本章的全部內(nèi)容,主要講述了springboot整合mysql并且使用SpringDataJPA來完成數(shù)據(jù)庫操作。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容