手把手帶你搭一個SpringBoot+SpringData JPA的Demo

前言

只有光頭才能變強。

不知道大家對SpringBoot和Spring Data JPA了解多少,如果你已經(jīng)學過Spring和Hibernate的話,那么SpringBoot和SpringData JPA可以分分鐘上手的。SpringBoot和SpringData JPA的好處我就不說了。

一、從零搭建環(huán)境

本次我使用的是IDEA編輯器來搭建SpringBoot和Spring Data JPA環(huán)境

首先,我們在IDEA新建項目的時候,選擇Spring Initializr,然后next就行了。

選擇Spring Initializr

然后填寫一些項目的資料(其實這些資料也無關(guān)緊要,自己看著填就好了),隨后點擊next

填寫一些項目的資料

隨后在勾選的時候,我就隨手勾選了個LomBok(其他的沒勾選,反正后面我們可以在pom文件下配置嘛)??梢钥闯?,本次SpringBoot的版本為2.1.3。

:如果不太了解LomBok的同學,建議去搜一下。這是一個非常好用的插件,有了它我們可以不用寫繁瑣的set/get方法。記得:使用lomBok還需要在IDEA下安裝插件

勾選了個LomBok

然后IDEA就會幫我們創(chuàng)建出Maven管理下SpringBoot的項目啦,此時一般我們會指定自己的下載好的Maven,重寫它的settings.xml文件需進階需獲取架構(gòu)師資料,想要一起來學習進步,JAVA高階交流群:851531810;

配置maven

然后Maven就一直在下載相關(guān)的依賴啊,必要的插件啊(我等了差不多10分鐘吧,這個時間可以去倒杯Java喝喝.haha),等Maven下載完之后,我們的項目就成了下面那個樣子了(:原生的是application.properties文件的,我改了一下后綴,我比較喜歡yml格式的):

已經(jīng)是一個SpringBoot項目了

二、完善pom文件

現(xiàn)在pom文件只有SpringBoot和LomBok的依賴,想要完成CURD的功能,我們需要用到Spring Web模塊、Spring Data JPA以及MySQL驅(qū)動依賴,所以我們得在pom文件下加入這些依賴:

<!--Web必要的-->

org.springframework.boot

spring-boot-starter-web

<!--spring?data?jpa-->

org.springframework.boot

spring-boot-starter-data-jpa

<!--?MySQL的java驅(qū)動?-->

mysql

mysql-connector-java

pom文件的完整依賴需進階需獲取架構(gòu)師資料,想要一起來學習進步,JAVA高階交流群:851531810;圖如下:

pom文件的完整依賴圖

三、配置yml文件

既然我們用到了SpringData JPA和MySQL,我們得為其進行配置最基礎(chǔ)的信息。比如說數(shù)據(jù)庫的用戶名和密碼,相對應的庫,以及SpringData JAP的策略。

#服務端容器的配置

server:

port:?8887

#數(shù)據(jù)庫配置

spring:

datasource:

username:?填寫自己的

password:?填寫自己的

driver-class-name:?com.mysql.cj.jdbc.Driver

url:?jdbc:mysql://填寫自己的機器:3306/填寫自己的庫?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC

#?JPA配置

jpa:

hibernate:

ddl-auto:?update

show-sql:?true

#?formatSQL得這樣寫

properties:

hibernate:

format_sql:?true

yml文件完整圖如下:

yml文件完整圖

數(shù)據(jù)庫的信息填寫成自己的就行了。

四、寫一個User實體

我畢業(yè)設(shè)計其中就有對用戶的管理,我們用戶實體設(shè)計如下(大家的當然可以跟我的不一樣了,我這只是樣例):

packagecom.zhongfucheng.example.demo.domain;

importlombok.Data;

importorg.hibernate.annotations.GenericGenerator;

importjavax.persistence.Entity;

importjavax.persistence.GeneratedValue;

importjavax.persistence.Id;

importjavax.persistence.Table;

importjava.io.Serializable;

importjava.util.Date;

/**

*?存儲用戶的信息

*

*@authorozc

*@version1.0

*/

@Entity//?jpa的注解,需要加

@Table(name?="table_user")//?指定數(shù)據(jù)庫的表名

@Data//?lombok?

publicclassUserimplementsSerializable{

@Id

@GeneratedValue(generator?="system-uuid")

@GenericGenerator(name?="system-uuid",?strategy?="uuid")

privateString?userId;

privateString?userNickname;

privateString?userPassword;

privateString?userEmail;

privateInteger?actiState;

//激活成功與激活失敗常量

publicstaticfinalintACTIVATION_SUCCESSFUL?=1;

publicstaticfinalintACTIVATION_UNSUCCESSFUL?=0;

privateString?actiCode;

privateDate?tokenExptime;

}

再補充一句:因為我們有了LomBok的Data注解,并且在IDEA已經(jīng)下好的LomBok的插件,所以我們可以不用寫set、get方法。需進階需獲取架構(gòu)師資料,想要一起來學習進步,JAVA高階交流群:851531810;

User實體圖如下:

User實體圖

五、寫一個UserRepository

UserRepository是dao層的東西了,相當于UserDao/UserMapper,只是叫法不一樣而已。比如在Struts2喜歡將名字取成xxxAction,而在SpringMVC喜歡將名字取成xxxxController。

一般地,我們將UserRepository繼承JpaRepository就可以有對應的增刪改查方法:

importcom.zhongfucheng.example.demo.domain.User;

importorg.springframework.data.jpa.repository.JpaRepository;

/**

*?UserDao??操作數(shù)據(jù)庫

*@authorozc

*@version1.0

*/

publicinterfaceUserRepositoryextendsJpaRepository{

}

UserRepository圖如下:

UserRepository圖

ok,我們的UserRepository已經(jīng)寫好了,至于為啥我們傳入<User, String>,點進去看一下就明白了:

T表示為我們實體的類型,ID表示為我們主鍵的類型

六、寫一個UserService

我們就查user表所有的記錄出來就好了,代碼如下:

//?接口

publicinterfaceUserService{

ListgetAllUser();

}

//?實現(xiàn)

@Service

publicclassUserServiceImplimplementsUserService{

@Autowired

privateUserRepository?userRepository;

@Override

publicListgetAllUser(){

returnuserRepository.findAll();

}

}

UserService圖如下:

UserService圖

為啥會有findAll()方法?因為我們的UserRepository 繼承了JpaRepository

需進階需獲取架構(gòu)師資料,想要一起來學習進步,JAVA高階交流群:851531810;

七、寫一個UserController

UserController調(diào)用一下service的方法,看是否能返回成功,如果能返回成功,那說明我們的環(huán)境已經(jīng)是ok的了。

UserController代碼如下:

@RestController

publicclassUserController{

@Autowired

privateUserService?userService;

/**

*?得到所有用戶

*/

@GetMapping(value?="/user",?produces?=?{"application/json;charset=UTF-8"})

publicvoidgetAllUser(){

List?allUser?=?userService.getAllUser();

for(User?user?:?allUser)?{

System.out.println(user);

}

}

}

Controller代碼圖如下:

Controller代碼圖

八、測試一下看是否能返回數(shù)據(jù)

進入DemoApplication,右鍵,啟動我們的SpringBoot項目:

啟動SpringBoot項目

在瀏覽器輸入我們的url:http://localhost:8887/user。然后我們從后臺查看,打印出查詢的SQL語句,已經(jīng)后臺已經(jīng)打印表已有的記錄。

打印出查詢的SQL語句和已有的記錄

最后

我們可以發(fā)現(xiàn)使用SpringBoot+SpringData JPA的方式,不需要很多的配置,不需要很多的代碼就可以從數(shù)據(jù)庫中查找出數(shù)據(jù)了。非常適合我們做一些簡答的測試和小功能。如果對例子有疑問的同學應該是對SpringData JPA不太熟悉,建議去找找相關(guān)的教程看一下,相信你可以很快就入門了。

需進階需獲取架構(gòu)師資料,想要一起來學習進步,JAVA高階交流群:851531810;

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

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

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