帶你搭一個SpringBoot+SpringData JPA的環境

Java3y發表於2019-03-23

前言

只有光頭才能變強。

文字已收錄至我的GitHub倉庫,歡迎Star:github.com/ZhongFuChen…

不知道大家對SpringBoot和Spring Data JPA瞭解多少,如果你已經學過Spring和Hibernate的話,那麼SpringBoot和SpringData JPA可以分分鐘上手的。SpringBoot和SpringData JPA的好處我就不說了,當時我學習的時候也粗略做過筆記,有興趣的同學可以去看看

其實我在學完SpringBoot和SpringData JPA了之後,寫過一個小Demo,但一直沒發出來而已(懶)。最近要寫畢業設計的一個管理模組(CRUD),並且我又沒寫過相關SpringBoot和SpringData JPA的搭建教程,所以就誕生了這篇文章了。

一、從零搭建環境

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

首先,我們在IDEA新建專案的時候,選擇Spring Initializr,然後next就行了。

選擇Spring Initializr

然後填寫一些專案的資料(其實這些資料也無關緊要,自己看著填就好了),隨後點選next

填寫一些專案的資料

隨後在勾選的時候,我就隨手勾選了個LomBok(其他的沒勾選,反正後面我們可以在pom檔案下配置嘛)。可以看出,本次SpringBoot的版本為2.1.3

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

勾選了個LomBok

然後IDEA就會幫我們建立出Maven管理下SpringBoot的專案啦,此時一般我們會指定自己的下載好的Maven,重寫它的settings.xml檔案

配置maven

然後Maven就一直在下載相關的依賴啊,必要的外掛啊(我等了差不多10分鐘吧,這個時間可以去倒杯Java喝喝.haha),等Maven下載完之後,我們的專案就成了下面那個樣子了(:原生的是application.properties檔案的,我改了一下字尾,我比較喜歡yml格式的):

已經是一個SpringBoot專案了

二、完善pom檔案

現在pom檔案只有SpringBoot和LomBok的依賴,想要完成CURD的功能,我們需要用到Spring Web模組、Spring Data JPA以及MySQL驅動依賴,所以我們得在pom檔案下加入這些依賴:


<!--Web必要的-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--spring data jpa-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- MySQL的java驅動 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

複製程式碼

pom檔案的完整依賴圖如下:

pom檔案的完整依賴圖

三、配置yml檔案

既然我們用到了SpringData JPA和MySQL,我們得為其進行配置最基礎的資訊。比如說資料庫的使用者名稱和密碼,相對應的庫,以及SpringData JAP的策略。


#服務端容器的配置
server:
  port: 8887


#資料庫配置
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檔案完整圖

資料庫的資訊填寫成自己的就行了。

四、寫一個User實體

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

package com.zhongfucheng.example.demo.domain;

import lombok.Data;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

/**
 * 儲存使用者的資訊
 *
 * @author ozc
 * @version 1.0
 */
@Entity // jpa的註解,需要加
@Table(name = "table_user") // 指定資料庫的表名
@Data // lombok 
public class User implements Serializable {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    private String userId;

    private String userNickname;

    private String userPassword;

    private String userEmail;

    private Integer actiState;

    //啟用成功與啟用失敗常量
    public static final int ACTIVATION_SUCCESSFUL = 1;
    public static final int ACTIVATION_UNSUCCESSFUL = 0;

    private String actiCode;

    private Date tokenExptime;

}
複製程式碼

再補充一句:因為我們有了LomBok的Data註解,並且在IDEA已經下好的LomBok的外掛,所以我們可以不用寫set、get方法。

User實體圖如下:

User實體圖

五、寫一個UserRepository

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

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


import com.zhongfucheng.example.demo.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;


/**
 * UserDao  運算元據庫
 * @author ozc
 * @version 1.0
 */
public interface UserRepository extends JpaRepository<User, String> {

}

複製程式碼

UserRepository圖如下:

UserRepository圖

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

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

六、寫一個UserService

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


// 介面
public interface UserService {

    List<User> getAllUser();
}

// 實現
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public List<User> getAllUser() {
        return userRepository.findAll();
    }
}
複製程式碼

UserService圖如下:

UserService圖

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

七、寫一個UserController

UserController呼叫一下service的方法,看是否能返回成功,如果能返回成功,那說明我們的環境已經是ok的了。

UserController程式碼如下:


@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 得到所有使用者
     */
    @GetMapping(value = "/user", produces = {"application/json;charset=UTF-8"})
    public void  getAllUser () {

        List<User> allUser = userService.getAllUser();

        for (User user : allUser) {
            System.out.println(user);
        }
    }
}
複製程式碼

Controller程式碼圖如下:

Controller程式碼圖

八、測試一下看是否能返回資料

進入DemoApplication,右鍵,啟動我們的SpringBoot專案:

啟動SpringBoot專案

在瀏覽器輸入我們的url:http://localhost:8887/user。然後我們從後臺檢視,列印出查詢的SQL語句,已經後臺已經列印表已有的記錄。

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

最後

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

樂於輸出乾貨的Java技術公眾號:Java3y。公眾號內有200多篇原創技術文章、海量視訊資源、精美腦圖,不妨來關注一下!

帥的人都關注了

覺得我的文章寫得不錯,不妨點一下

相關文章