天天看點

springboot(十三):springboot小技巧

一些springboot小技巧、小知識點

我們在做測試的時候經常需要初始化導入一些資料,如何來處理呢?會有兩種選擇,一種是使用jpa,另外一種是spring jdbc。兩種方式各有差別下面來詳細介紹。

使用jpa

在使用spring boot jpa的情況下設定spring.jpa.hibernate.ddl-auto的屬性設定為 create or create-drop的時候,spring boot 啟動時預設會掃描classpath下面(項目中一般是resources目錄)是否有import.sql,如果有機會執行import.sql腳本。

使用spring jdbc

使用spring jdbc 需要在配置檔案中添加以下配置

schema :設定腳本的路徑

sql-script-encoding:設定腳本的編碼

spring boot項目啟動的時候會自動執行腳本。

ddl-auto 四個值的解釋

create: 每次加載hibernate時都會删除上一次的生成的表,然後根據你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執行,這就是導緻資料庫表資料丢失的一個重要原因。

create-drop :每次加載hibernate時根據model類生成表,但是sessionfactory一關閉,表就自動删除。

update:最常用的屬性,第一次加載hibernate時根據model類會自動建立起表的結構(前提是先建立好資料庫),以後加載hibernate時根據 model類自動更新表結構,即使表結構改變了但表中的行仍然存在不會删除以前的行。要注意的是當部署到伺服器後,表結構是不會被馬上建立起來的,是要等 應用第一次運作起來後才會。

validate :每次加載hibernate時,驗證建立資料庫表結構,隻會和資料庫中的表進行比較,不會建立新表,但是會插入新值。

none : 什麼都不做。

不同點

第一種方式啟動的時候jpa會自動建立表,import.sql隻負責建立表單後的初始化資料。第二種方式啟動的時候不會建立表,需要在初始化腳本中加班判斷表是否存在,不存在建立表再初始化腳本的步驟。

在生産中,這兩種模式都建議慎用!

參考:howto-database-initialization

預設配置下,thymeleaf對.html的内容要求很嚴格,比如,如果少最後的标簽封閉符号/,就會報錯而轉到錯誤頁。也比如你在使用vue.js這樣的庫,然後有

這樣的html代碼,也會被thymeleaf認為不符合要求而抛出錯誤。

通過設定thymeleaf模闆可以解決這個問題,下面是具體的配置:

legacyhtml5需要搭配一個額外的庫nekohtml才可用 項目中使用的建構工具是maven添加如下的依賴即可完成:

作者:純潔的微笑