1. 程式人生 > >Spring Boot學習筆記(三)——使用JPA查詢資料庫返回需要的資料

Spring Boot學習筆記(三)——使用JPA查詢資料庫返回需要的資料

1.概述
在上一篇中,我們已經學會了如何建立執行一個Spring Boot程式,但是他還遠遠滿足不了一個網站的基本需求,完成這篇的學習後我們就能實現一個簡單的雛形。
2.目標
在本篇中,實現的簡單的資料庫訪問,讀取資料的功能。
3.詳細步驟
(1)在第二次的專案中的pom.xml檔案加入Jpa以及你所使用的資料庫所對應的依賴,Jpa是Spring Boot中對映資料庫所需的依賴,我使用的是mysql資料庫,所以匯入mysql資料庫依賴。

<dependency>
    <groupId>org.springframework.boot</groupId
>
<artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>

(2)配置application.properties檔案,請結合自身的資料庫填寫這些配置項。

spring.datasource.url=***
spring.datasource.username=***
spring.datasource.password=***
spring.datasource.driver-class-name=***

這裡採用的方式是通過內建的配置文件覆蓋Spring Boot的自動配置。
(3)編寫我們的實體類

@Entity
@Table
public class User {
    @Id
    private String Id;
    private String name;

    public User() {
    }

    public
String getId() { return Id; } public void setId(String id) { Id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "Id='" + Id + '\'' + ", name='" + name + '\'' + '}'; } }

@Entity註解是用來申明此類是一個實體類,@Table註解表名了此類與資料庫中表相對應,對此類進行操作就是對資料庫的表進行操作
(4)編寫dao/repository層
此層為對資料的基本處理層,用來編寫直接對資料庫進行操作的程式碼。
由於我們匯入了JPA依賴,很多通常的查詢,刪除,更新等操作可以不用在此編寫了,Spring Boot提供了一些介面。而且還可以在介面中宣告函式名稱就能達到想要的效果,無需去實現函式,這真的是太便利了不是嗎ヾ(゚∀゚ゞ)

@Repository
public interface UserRepository extends JpaRepository<User,String> {
}

@Repository註解是告訴Spring Boot這是一個倉庫類,會在啟動的時候幫你自動注入。JpaRepository裡面含有一般資料庫操作所需要的介面,我們會在service層中呼叫他們。
(5)編寫service層
service層主要用於處理邏輯,是業務邏輯層。在此處我們編寫了一個介面和一個實現類。介面的設計是為了滿足鬆耦合的需求。
介面UserService的程式碼:

public interface UserService {
    List<User> getAll();
}

實現類UserServiceImpl的程式碼:

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserRepository userRepository;

    @Override
    public List<User> getAll() {
        return userRepository.findAll();
    }
}

@Service註解表名其是一個服務類,服務啟動時,Spring Boot會掃描到該類,並將其加入到容器中
@Autowired會自動將容器中的Bean注入其中。
(6)編寫Control層
此層主要進行對頁面的處理,包括跳轉或者傳參等等。

@Controller
public class UserControl {

    @Autowired
    private UserServiceImpl userService;

    @RequestMapping("/")
    public String toIndex(Model model){
        List<User> userList=userService.getAll();
        model.addAttribute("userList",userList);
        return "index";
    }
}

@Controller註解表明其為控制器類。
toIndex方法中多了一個Model引數,Model引數為頁面傳來的模型類,通過對模型類進行操作能夠完成對頁面進行傳參。
(7)頁面的編寫
index.html頁面程式碼如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
<ul>
    <li th:each="user : ${userList}">
        <span th:text="${user.name}"></span>
    </li>
</ul>
</body>
</html>

這個頁面中的 ‘th:’表名使用thymeleaf引擎去解析,這樣才能使靜態頁面動態化。想要了解更多的同學,可以自行百度thymeleaf的用法。
‘${*}’為Spring EL表示式,使用Spring EL表示式來獲取後臺傳來的各種資料。
(8)專案啟動後執行效果
資料庫中的資料:
這裡寫圖片描述

頁面的展示效果:
這裡寫圖片描述