以前一直使用 Python ,學習 Java 基本語法後也一直沒能實踐,正好部門的測試平臺是使用的 Spring Boot 框架開發,藉此機會學習一下,將來也能體會一下與 Python 的差別。java
首先明確咱們在本次體驗 Spring Boot 中想要實現的功能:mysql
之因此是這二者,是由於咱們在 Web 開發中最遇到的操做就是它們。spring
而可以實現寫入數據庫後,其餘查、改、刪的操做都是相似的。sql
工具 | 版本 |
---|---|
IDEA | 2019.2 |
JDK | 11 |
MySQL | 5.7 |
此處只是我的環境,非推薦環境,環境不一致沒太大問題數據庫
專業版自帶插件,無需安裝。瀏覽器
社區版須要在 IDEA 插件中心中搜索 "Spring Assistant" 安裝。bash
com.example.demo
),我選擇 Maven 做爲構建工具以上即建立成功一個新項目。app
由於使用的 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
的配置,有以下幾個選項:
實體類是對一個實體對象的代碼描述。
在實體類中創建與數據庫表和字段的關係映射(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 是一個 Java 實用工具,能夠經過註解來幫助開發人員消除冗長的 Java 代碼,應用在咱們的實體類上的效果以下:
@Entity
@Table(name="t_book")
@Data
public class Book{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
}
複製代碼
能夠看到,在使用 lombok
的 Data
註解後,咱們的代碼簡化了不少,不須要再編寫字段的 Getter/Setter
和 toString
方法,而且不須要爲字段註明數據庫Column,只須要保留主鍵的 @Id
註解便可。
實體類 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
表能夠看到已經插入一條數據。
仍是從最簡單的開始實現,先寫一個接收 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 開發的思想仍是一致。接下來在業務代碼中繼續學習了!