嵌入式數據庫H2的使用以及集成SpringBoot的操作示例

嵌入式數據庫H2的使用以及集成Spring Boot的操作示例,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

成都創新互聯服務項目包括牟定網站建設、牟定網站制作、牟定網頁制作以及牟定網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,牟定網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到牟定省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!

1.概要

前面講一些Mybatis特性的時候總是要寫一些例子演示給粉絲。用MySQL或者其他很大的數據庫太重了,因為只是個demo而已。當然也可以使用docker來安裝。但是還是需要依賴一些東西。有沒有非常小巧而且便于攜帶的數據庫,而且能滿足很小場景的數據庫。當然有。今天介紹一種純java編寫而且支持jdbc的嵌入式關系型數據庫H2。

2.數據庫H2

H2數據庫的特點:

  • 非常快,開源,支持JDBC API

  • 嵌入式和服務器模式;內存數據庫

  • 基于瀏覽器的控制臺應用程序

  • 占用空間小,jar只有2MB大小

以上只是官網列出的特點。其實還有跨平臺的優勢,支持目前常見的大部分平臺。還兼容常見的主流關系型數據庫,比如DB2、Oracle、MS SQL Server、Mysql、PostgreSQL、HSQLDB、Ignite、Derby等。

3.使用場景

基于以上的特點。H2數據庫特別適用于快速構建的小型應用。尤其在應用開發中和單元測試中使用非常方便,而且節省系統資源。而且springboot的依賴池也收錄了H2數據庫。接下來我們通過springboot結合Mybatis來對H2數據庫進行一些特性的講解演示。

4.springboot中使用H2

springboot使用H2數據庫非常簡單。集成BOM下的H2依賴就可以了。這里為了演示我們還引入了Mybatis。

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

        <dependency>
            <groupId>com.h3database</groupId>
            <artifactId>h3</artifactId>
            <scope>runtime</scope>
        </dependency>

當然引入依賴還不夠我們還需要對其他參數進行配置。當然這些配置可以通過springboot的 application.yml(application.properties)來完成。我們知道H2支持像tomcat一樣內嵌到springboot應用中,也支持獨立的server進程模式。通過不同的配置我們來演示一下。

5.內嵌模式

內嵌模式,就是把在應用中引入H2,啟動應用的同時,會把H2數據服務也啟動,應用中既包含了H2數據庫的服務端,同時應用又作為客戶端來連接H2數據庫。

5.1 內存模式連接

內存模式就是數據庫文件存在于內存中,沒有持久化,當應用進程關閉時數據庫與數據表會消失。為了獨立環境,我們利用springboot的profile特性來隔離不同模式的環境配置。我們定制一個名稱為application-inner.yml來測試內嵌模式。配置如下:

spring:
  datasource:
    #  驅動
    driver-class-name: org.h3.Driver
    # h3 內存數據庫 內存模式連接配置 庫名: mybatis
    url: jdbc:h3:mem:mybatis
    # 初始化數據表 DDL
    schema: classpath:sql/init.sql
    #  初始化數據 DML
    data: classpath:sql/data.sql
  h3:
    #    開啟console 訪問 默認false
    console:
      enabled: true
      settings:
        #      開啟h3 console 跟蹤 方便調試  默認 false
        trace: true
        #      允許console 遠程訪問 默認false
        web-allow-others: true
      #  h3 訪問路徑上下文
      path: /h3-console
# 日志
logging:
  level:
    cn:
      felord: debug

# mybatis 配置
mybatis:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
  type-aliases-package: cn.felord.mybatis.entity
  type-handlers-package: cn.felord.mybatis.type

springboot項目 通過指定 --spring.profiles.active=inner啟動后,輸入http://localhost:8080/h3-console,進入H2數據的控制臺:

嵌入式數據庫H2的使用以及集成Spring Boot的操作示例

一定要注意紅框按照你配置文件中的spring.datasource.url來設置,不要用默認值。如果沒有設置密碼直接點connect,設置密碼了輸入。進入下列界面:

嵌入式數據庫H2的使用以及集成Spring Boot的操作示例

因為我們在初始化指定了DDL 、 DML SQL腳本,創建了student表,而且插入了3條數據。所以會呈現出來。證明集成成功。同時我們執行maven 工程的測試包也會成功完成Mybatis 單元測試。但是我們關閉應用后數據會丟失因為這些數據存在于內存中。內存是會被回收的。不信你注釋掉 spring.datasource.schemaspring.datasource.data 重啟看看。那么如何持久化呢?這就用到嵌入模式了。

5.2 嵌入模式連接

嵌入模式就是數據庫文件存在于應用當前的硬盤內,進行了持久化,當應用進程關閉時數據庫與數據表不會消失。我們只需要將5.1的yml配置中的 spring.datasource.url 改為jdbc:h3:file:E:/H2/mybatis 。然后啟動重新登錄console。注意url要改為jdbc:h3:file:E:/H2/mybatis哦。發現數據都在,然后我們關閉再啟動發現報錯了:

嵌入式數據庫H2的使用以及集成Spring Boot的操作示例

說明數據庫中的數據沖突了。我們注釋掉DDL、DML初始化發現又能啟動了。證明數據持久化了。url 中 file: 后綴你系統的可用路徑,H2就能把數據持久化到該路徑下。

5.3兼容性

開始我們提到H2可以兼容很多數據庫。如何兼容呢?通過url后綴MODE參數來設置,總結一下自己使用:

  • Oracle jdbc:h3:~/test;MODE=Oracle或SQL語句SET MODE Oracle

  • Mysql jdbc:h3:~/test;MODE=MySQL;DATABASE\_TO\_LOWER=TRUE

  • PostgreSQL jdbc:h3:~/test;MODE=PostgreSQL;DATABASE\_TO\_LOWER=TRUE

  • MS SQL Server jdbc:h3:~/test;MODE=MSSQLServer或SQL語句SET MODE MSSQLServer

其他不一一列舉,但是注意兼容也不是完全兼容,會有一些注意事項和微小的差別。一般不會出現問題。進一步了解可查閱官方文檔和其他資料。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯的支持。

網站名稱:嵌入式數據庫H2的使用以及集成SpringBoot的操作示例
當前網址:http://m.kartarina.com/article22/pgoecc.html

成都網站建設公司_創新互聯,為您提供商城網站外貿建站企業建站App設計網站設計公司做網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設公司
主站蜘蛛池模板: 国产莉萝无码AV在线播放| 99热门精品一区二区三区无码 | 无码av中文一二三区| 无码国产成人午夜电影在线观看| 午夜亚洲av永久无码精品| 亚欧免费无码aⅴ在线观看| 成人无码区免费视频观看| 国产精品无码AV一区二区三区| 伊人久久精品无码麻豆一区| 伊人蕉久中文字幕无码专区| 精品无码国产一区二区三区AV| 青春草无码精品视频在线观| 久久人妻少妇嫩草AV无码专区 | 中文无码AV一区二区三区| 免费A级毛片无码A∨免费| av无码精品一区二区三区四区| 人妻丰满熟妇岳AV无码区HD| 国产成人无码一区二区三区在线| 亚洲精品无码高潮喷水A片软| 亚洲AV无码专区在线播放中文| 无码国模国产在线无码精品国产自在久国产| 精品无码人妻一区二区三区品| 国产精品va无码一区二区| 曰韩无码AV片免费播放不卡| 人妻无码久久精品人妻| 亚洲av永久无码天堂网| 无码av免费毛片一区二区 | 无码办公室丝袜OL中文字幕 | 国产丰满乱子伦无码专区| 一本大道无码人妻精品专区| 国产成人无码a区在线观看视频免费 | 精品人妻系列无码天堂| 无码精品人妻一区二区三区免费看 | 黄A无码片内射无码视频| 亚洲 另类 无码 在线| 无码国产亚洲日韩国精品视频一区二区三区| 无码少妇A片一区二区三区| 精品无码成人久久久久久| MM1313亚洲精品无码久久| 国产精品亚洲专区无码牛牛| 国产乱人伦无无码视频试看|