本篇文章開始代碼實踐,系統設計從底向上展開,所以本篇先介紹如何實現數據庫表實體類的設計實現。前端
SpringBoot數據庫的持久層框架主要分爲兩種架構模式,即以JDBC Template
爲表明的SQL類和以Spring Data JPA
爲表明的ORM對象類。其中:java
Spring Data JPA 是 Spring 基於 ORM 框架、JPA 規範的基礎上封裝的一套JPA應用框架,可以使開發者用極簡的代碼便可實現對數據的訪問和操做。它提供了包括增刪改查等在內的經常使用功能,且易於擴展!學習並使用 Spring Data JPA 能夠極大提升開發效率!spring data jpa讓咱們解脫了DAO層的操做,基本上全部CRUD均可以依賴於它來實現,本身寫個倉儲接口後繼承JpaRepository便可實現最基本的增刪改查功能!
在使用@Entity
進行實體類的持久化操做,當JPA
檢測到咱們的實體類當中有@Entity 註解的時候,會在數據庫中生成關聯映射對應的表結構信息,所以針對本項目狀況最底層的設計實現一個@Entity
註解的書籍對象定義便可。spring
項目開始前,先按上一篇文章【從零入門系列-1】Sprint Boot 之 程序結構設計說明後臺程序結構創建相對應的目錄:sql
控制層:前端路由和後端處理關係處理,目錄:Controller 數據服務層:自定義對數據庫的訪問操做方法,目錄:Service 數據訪問層:實現通用的數據庫訪問功能,SpringData的JPA方案,目錄:Dao 數據實體層:定義數據庫表的屬性方法,目錄:Domain
根據結構,咱們須要在Domain目錄下編寫項目表實體類,右鍵Domain
文件夾,New->Java Class
。數據庫
1.新建Book
類segmentfault
package com.arbboter.demolibrary.Domain; import javax.persistence.Entity; import javax.persistence.Table; /** * @Entity 註解該類爲數據庫表實體類,JPA可自動掃描識別到 * @Table 註解數據表信息,其中name指定表名 */ @Entity @Table(name = "library_book") public class Book{ }
注意添加的類須要使用@Entity
註解,其中@Table
是可選的,默認不配置生成的表名和類名相同,若是上述類中不使用@Table
,那麼本類對應的表名爲book
。後端
2.添加表字段信息springboot
public class Book{ /** * ID,惟一主鍵,按Alt+Enter能夠快速導入引入 */ @Id @GeneratedValue private Integer id; /** * 書名 */ private String name; /** * 做者 */ private String author; /** * 封面 */ private String image; }
@Id
註解用於聲明一個實體類的屬性映射爲數據庫的主鍵列,該屬性一般置於屬性聲明語句以前,可與聲明語句同行,也可寫在單獨行上。 架構
@GeneratedValue
用於註解主鍵的生成策略,經過strategy 屬性指定。默認狀況下,JPA 自動選擇一個最適合底層數據庫的主鍵生成策略:SqlServer對應identity,MySQL 對應 auto increment。app
該註解的strategy屬性默認值爲GenerationType.AUTO
。
3.利用IDEA自動添加getter
setter
toString
方法
@Entity @Table(name = "library_book") public class Book{ /** * 屬性此處未列出 */ /** * 按Alt+Insert 或者 在此文件空白處右鍵選擇Generate... * 自動生成getter和setter及toString方法 */ 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; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } @Override public String toString() { return "Book{" + "id=" + id + ", name='" + name + '\'' + ", author='" + author + '\'' + ", image='" + image + '\'' + '}'; } }
建議按Alt+Insert
或者 在此文件空白處右鍵選擇Generate...
自動生成getter
和setter
及toString
方法,其中toString
方便輸出查閱。
4.啓動測試
此時啓動main函數發現,程序正常啓動,可是查看數據庫咱們能夠發現數據庫表library_book
並無自動生成,由於到這裏咱們尚未自定義配置JPA。
這裏先配置上JPA的配置,本項目使用的SQL Server 2008數據庫,在application.properties
配置文件中新增如下配置信息:
# JPA配置 spring.jpa.database=sql_server spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.database-platform=org.hibernate.dialect.SQLServer2008Dialect
建議以上配置項都設置上,我在學習過程當中因沒有配置spring.jpa.database-platform
項,致使項目啓動失敗。配置spring.jpa.hibernate.ddl-auto
取值含義爲:
新增該配置後再次啓動程序,咱們能夠在輸出欄看到相似這樣的輸出:
2019-05-14 12:09:34.977 INFO 115652 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.SQLServer2008Dialect Hibernate: create table library_book (id int not null, author varchar(255), image varchar(255), name varchar(255), primary key (id))
從日誌中咱們能夠看出,程序已經自動建立了book
的實體類了,能夠在數據庫中驗證發現,該表已建立OK。
@Table註解用來標識實體類與數據表的對應關係,默認和類名一致。
@Column(name = "dict_name",columnDefinition="varchar(100) COMMENT '字典名'") - 字段名、類型、註釋
Column註解來標識實體類中屬性與數據表中字段的對應關係,其屬性均爲可選屬性:
本章內容記錄了數據庫實體類的簡單的實現方式,並經過application.properties
配置JPA
的數據庫配置項,使得程序運行後能自動關聯並操做數據庫表。
下一章將介紹對數據庫的增刪改查(CRUD)操做相關內容,請繼續關注。