国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【從零入門系列-2】Spring Boot 之 數據庫實體定義實現

nemo / 3617人閱讀

摘要:文章系列從零入門系列之從零入門系列之程序結構設計說明前言本篇文章開始代碼實踐,系統設計從底向上展開,因此本篇先介紹如何實現數據庫表實體類的設計實現。主鍵由數據庫自動生成主要是自動增長型主鍵由程序控制。

文章系列

【從零入門系列-0】Sprint Boot 之 Hello World

【從零入門系列-1】Sprint Boot 之 程序結構設計說明

前言

本篇文章開始代碼實踐,系統設計從底向上展開,因此本篇先介紹如何實現數據庫表實體類的設計實現。

SpringBoot數據庫的持久層框架主要分為兩種架構模式,即以JDBC Template為代表的SQL類和以Spring Data JPA為代表的ORM對象類。其中:

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 規范的基礎上封裝的一套JPA應用框架,可使開發者用極簡的代碼即可實現對數據的訪問和操作。它提供了包括增刪改查等在內的常用功能,且易于擴展!學習并使用 Spring Data JPA 可以極大提高開發效率!spring data jpa讓我們解脫了DAO層的操作,基本上所有CRUD都可以依賴于它來實現,自己寫個倉儲接口后繼承JpaRepository即可實現最基本的增刪改查功能!

在使用@Entity進行實體類的持久化操作,當JPA檢測到我們的實體類當中有@Entity 注解的時候,會在數據庫中生成關聯映射對應的表結構信息,因此針對本項目情況最底層的設計實現一個@Entity注解的書籍對象定義即可。

項目開始前,先按上一篇文章【從零入門系列-1】Sprint Boot 之 程序結構設計說明后臺程序結構建立相對應的目錄:

控制層:前端路由和后端處理關系處理,目錄:Controller
數據服務層:自定義對數據庫的訪問操作方法,目錄:Service
數據訪問層:實現通用的數據庫訪問功能,SpringData的JPA方案,目錄:Dao
數據實體層:定義數據庫表的屬性方法,目錄:Domain

根據結構,我們需要在Domain目錄下編寫項目表實體類,右鍵Domain文件夾,New->Java Class

編寫實體類

1.新建Book

   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.添加表字段信息

   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。

TABLE:使用一個特定的數據庫表格來保存主鍵。

SEQUENCE:根據底層數據庫的序列來生成主鍵,條件是數據庫支持序列。

IDENTITY:主鍵由數據庫自動生成(主要是自動增長型)

AUTO:主鍵由程序控制。

該注解的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...自動生成gettersettertoString方法,其中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取值含義為:

ddl-auto:create----每次運行該程序,沒有表格會新建表格,表內有數據會清空

ddl-auto:create-drop----每次程序結束的時候會清空表

ddl-auto:update----每次運行程序,沒有表格會新建表格,表內有數據不會清空,只會更新

ddl-auto:validate----運行程序會校驗數據與數據庫的字段類型是否相同,不同會報錯

新增該配置后再次啟動程序,我們可以在輸出欄看到類似這樣的輸出:

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 - 映射表名

@Table注解用來標識實體類與數據表的對應關系,默認和類名一致。

@Id - 主鍵

@GeneratedValue(strategy=GenerationType.IDENTITY) - 自動遞增生成

@Column(name = "dict_name",columnDefinition="varchar(100) COMMENT "字典名"") - 字段名、類型、注釋

Column注解來標識實體類中屬性與數據表中字段的對應關系,其屬性均為可選屬性:

name屬性定義了被標注字段在數據庫表中所對應字段的名稱;

unique屬性表示該字段是否為唯一標識,默認為false。如果表中有一個字段需要唯一標識,則既可以使用該標記,也可以使用@Table標記中的@UniqueConstraint。

nullable屬性表示該字段是否可以為null值,默認為true。如果屬性里使用了驗證類里的@NotNull注釋,這個屬性可以不寫。

insertable屬性表示在使用“INSERT”腳本插入數據時,是否需要插入該字段的值。

updatable屬性表示在使用“UPDATE”腳本插入數據時,是否需要更新該字段的值。insertable和updatable屬性一般多用于只讀的屬性,例如主鍵和外鍵等。這些字段的值通常是自動生成的。

columnDefinition屬性表示創建表時,該字段創建的SQL語句,一般用于通過Entity生成表定義時使用。若不指定該屬性,通常使用默認的類型建表,若此時需要自定義建表的類型時,可在該屬性中設置。(也就是說,如果DB中表已經建好,該屬性沒有必要使用。)

table屬性定義了包含當前字段的表名。

length屬性表示字段的長度,當字段的類型為varchar時,該屬性才有效,默認為255個字符。

precision屬性和scale屬性表示精度,當字段類型為double時,precision表示數值的總長度,scale表示小數點所占的位數。

@UpdateTimestamp - 更新時自動更新時間

@CreationTimestamp - 創建時自動更新時間

@Version - 版本號,更新時自動加1

結束語

本章內容記錄了數據庫實體類的簡單的實現方式,并通過application.properties配置JPA的數據庫配置項,使得程序運行后能自動關聯并操作數據庫表。

下一章將介紹對數據庫的增刪改查(CRUD)操作相關內容,請繼續關注。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77667.html

相關文章

  • 從零入門系列-1】Spring Boot 程序結構設計

    摘要:結束語本章預先提供了項目實際效果圖以及項目的整體結構設計,后續文章會根據本篇章設計依次實現各個模塊,請持續關注。 文章系列 【從零入門系列】Sprint Boot 之 Hello World 設計效果圖 頁面展示showImg(https://raw.githubusercontent.com/arbboter/resource/master/segmentfault/image/...

    jcc 評論0 收藏0
  • 從零入門系列-3】Spring Boot 據庫操作

    摘要:編寫測試用例代碼打開框架自動生成的測試代碼文件編寫測試用例,測試增刪改查效果,測試代碼如下注釋,它可以對類成員變量方法及構造函數進行標注,完成自動裝配的工作。 文章系列 【從零入門系列-0】Sprint Boot 之 Hello World 【從零入門系列-1】Sprint Boot 之 程序結構設計說明 【從零入門系列-2】Sprint Boot 之 數據庫實體類 前言 前一章...

    Leo_chen 評論0 收藏0
  • 從零入門系列-0】Spring Boot Hello World

    摘要:結束語非常智能化,為開發者提供大量的默認配置細節,因此在的幫助下可以快速完成項目的運行,極簡入門繼續看從零入門系列程序結構設計說明 環境準備 java 開發環境 JDK1.8 安裝 Maven 安裝,jar自動依賴及包管理工具 IDE編輯器:IntelliJ IDEA 2019 說明 本項目為從零入門示例,目標為構建一個書籍增刪改查管理頁,力爭記錄一個無java基礎的程序員學習筆...

    icyfire 評論0 收藏0

發表評論

0條評論

nemo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<