Spring Boot 初探 - 接口和數據庫操做

以前一直使用 Python ,學習 Java 基本語法後也一直沒能實踐,正好部門的測試平臺是使用的 Spring Boot 框架開發,藉此機會學習一下,將來也能體會一下與 Python 的差別。java

帶着目標

首先明確咱們在本次體驗 Spring Boot 中想要實現的功能:mysql

  • 一個 Web 接口
  • 數據寫入數據庫中

之因此是這二者,是由於咱們在 Web 開發中最遇到的操做就是它們。spring

而可以實現寫入數據庫後,其餘查、改、刪的操做都是相似的。sql

基礎環境

工具 版本
IDEA 2019.2
JDK 11
MySQL 5.7

此處只是我的環境,非推薦環境,環境不一致沒太大問題數據庫

Spring Boot 插件安裝

專業版自帶插件,無需安裝。瀏覽器

社區版須要在 IDEA 插件中心中搜索 "Spring Assistant" 安裝。bash

項目配置

新建項目

  1. 選擇項目類型 "Spring Initializr"
  2. 選擇對應 SDK,"Initializr Service URL" 選擇默認便可,下一步
  3. 輸入項目名稱等信息(我保持默認,所以項目爲 com.example.demo),我選擇 Maven 做爲構建工具
  4. 選擇須要加入的依賴,推薦使用:
    • Developer Tools:
      • Spring Boot DevTools (修改代碼後能自動重啓服務)
      • Lombok (Java優秀的註解庫,能夠減小Setter/Getter等代碼的編寫)
    • Web:
      • Spring Web Starter (包含Spring項目所須要的組件與容器)
    • SQL:
      • Spring Data JPA (遵循JPA規範,使用Hibernate持久化數據的庫)
      • MySQL Driver (數據庫驅動)

以上即建立成功一個新項目。app

pom.xml

由於使用的 Spring Initializr 建立項目,pom.xml 中的依賴座標都已經配置好,無需修改。框架

添加數據庫配置

修改 src/main/resouces/application.properties 文件,添加下面內容:ide

# 數據庫配置
# 數據庫鏈接地址,jpa庫須要提早建立好
spring.datasource.url=jdbc:mysql://localhost:3306/jpa?useSSL=false
# 數據庫帳號
spring.datasource.username=root
# 數據庫密碼
spring.datasource.password=123456
# 數據庫驅動
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# JPA 配置
# 自動處理對象關係映射,容許自動建表等操做
spring.jpa.hibernate.ddl-auto=update
# 是否在控制檯顯示數據庫語句
spring.jpa.show-sql=true
複製代碼

關於 spring.jpa.hibernate.ddl-auto 的配置,有以下幾個選項:

  • validate: 加載 Hibernate 時,驗證建立數據庫表結構
  • create: 每次加載 Hibernate ,從新建立數據庫表結構
  • create-drop: 加載 Hibernate 時建表,退出時刪除表結構
  • update: 加載 Hibernate 自動更新數據庫表結構

代碼實現

數據庫操做

實體類

實體類是對一個實體對象的代碼描述。

在實體類中創建與數據庫表和字段的關係映射(ORM),使得經過操做實體類就完成對數據庫的增刪改查操做。

以建立一個 "Book" 實體類爲例,假設咱們指望操做的表名爲 "t_book":

// 標記此類爲實體類
@Entity
// 設置操做的數據庫表
@Table(name="t_book")
public class Book{
    // 設置主鍵
    @Id
    // 字段值的生成策略,暫不展開說明,能夠私下查一下
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    // 配置字段屬性,能夠不須要
    @Column(length = 32)
    private String name;

    // 添加字段的 getter/setter 方法
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
複製代碼

代碼有些長,能夠使用 Lombok 進行簡化。

*使用 Lombok 簡化代碼

Lombok 是一個 Java 實用工具,能夠經過註解來幫助開發人員消除冗長的 Java 代碼,應用在咱們的實體類上的效果以下:

@Entity
@Table(name="t_book")
@Data
public class Book{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
}
複製代碼

能夠看到,在使用 lombokData 註解後,咱們的代碼簡化了不少,不須要再編寫字段的 Getter/SettertoString 方法,而且不須要爲字段註明數據庫Column,只須要保留主鍵的 @Id 註解便可。

DAO 類

實體類 Book 只是創建了對象關係映射,還須要建立一個 DAO 類簡化持久化過程(save/delete等)。

import org.springframework.data.jpa.repository.JpaRepository;
public interface BookDao extends JpaRepository<Book, Integer> {
}
複製代碼

方法在 JpaRepository 中已經實現,不須要額外編寫。

測試用例

建立一個測試用例,用來測試數據的寫入:

@RunWith(SpringRunner.class)
@SpringBootTest
public class BookTests {
    @Autowired
    public BookDao bookDao;

    @Test
    public void testBook() {
        Book book = new Book();
        book.setName("book1");
        bookDao.save(book);
    }
}
複製代碼

測試用例經過,查詢數據庫的 t_book 表能夠看到已經插入一條數據。

Web 接口

仍是從最簡單的開始實現,先寫一個接收 GET 請求的接口,返回 "Hello, Spring Boog!" 響應內容:

@RestController
@RequestMapping("/")
public class HelloController {
    @RequestMapping("/hello")
    public String index(){
        return "Hello, Spring Boot!";
    }
}
複製代碼

右鍵運行項目的 DemoApplication ,啓動後,訪問 0.0.0.0:8080/hello 看到瀏覽器輸出 "Hello, Spring Boot!" ,一個最簡單的接口就建立成功了。

總結

以前對 Java 的印象是繁瑣,聲明多、配置多。可是在體驗了 Spring Boot 後,特別是使用了一些初始化插件進行建立項目後能夠發現,其實最基礎的代碼框架 Spring Boot 已經爲咱們生成好,不過是須要理解一些框架或者庫的用法,大致 Web 開發的思想仍是一致。接下來在業務代碼中繼續學習了!

相關文章
相關標籤/搜索