亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

Spring Boot中使用MongoDB數據庫的方法

2020-03-14 12:50:57
字體:
來源:轉載
供稿:網友

我們在產品中用到 NoSQL 數據庫 MongoDB 。

下面就來簡單介紹一下 MongoDB ,并且通過一個例子來介紹 Spring Boot 中對 MongoDB 訪問的配置和使用。

MongoDB簡介

MongoDB是一個基于分布式文件存儲的數據庫,它是一個介于關系數據庫和非關系數據庫之間的產品,其主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)和傳統的RDBMS系統(具有豐富的功能)之間架起一座橋梁,它集兩者的優勢于一身。

MongoDB支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型,也因為他的存儲格式也使得它所存儲的數據在Nodejs程序應用中使用非常流暢。

既然稱為NoSQL數據庫,Mongo的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

但是,MongoDB也不是萬能的,同MySQL等關系型數據庫相比,它們在針對不同的數據類型和事務要求上都存在自己獨特的優勢。在數據存儲的選擇中,堅持多樣化原則,選擇更好更經濟的方式,而不是自上而下的統一化。

較常見的,我們可以直接用MongoDB來存儲鍵值對類型的數據,如:驗證碼、Session等;由于MongoDB的橫向擴展能力,也可以用來存儲數據規模會在未來變的非常巨大的數據,如:日志、評論等;由于MongoDB存儲數據的弱類型,也可以用來存儲一些多變json數據,如:與外系統交互時經常變化的JSON報文。而對于一些對數據有復雜的高事務性要求的操作,如:賬戶交易等就不適合使用MongoDB來存儲。

MongoDB官網

訪問MongoDB

在Spring Boot中,對如此受歡迎的MongoDB,同樣提供了自配置功能。

引入依賴

Spring Boot中可以通過在pom.xml中加入spring-boot-starter-data-mongodb引入對mongodb的訪問支持依賴。它的實現依賴spring-data-mongodb。是的,您沒有看錯,又是spring-data的子項目,之前介紹過spring-data-jpa、spring-data-redis,對于mongodb的訪問,spring-data也提供了強大的支持,下面就開始動手試試吧。

compile "org.springframework.boot:spring-boot-starter-data-mongodb:$spring_boot_version"

完整 build.gradle

group 'name.quanke.kotlin'version '1.0-SNAPSHOT'buildscript { ext.kotlin_version = '1.2.10' ext.spring_boot_version = '1.5.4.RELEASE' ext.springfox_swagger2_version = '2.7.0' ext.mysql_version = '5.1.21' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version")// Kotlin整合SpringBoot的默認無參構造函數,默認把所有的類設置open類插件 classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version") classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version") }}apply plugin: 'kotlin'apply plugin: "kotlin-spring" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-pluginapply plugin: 'org.springframework.boot'apply plugin: "kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-helljar { baseName = 'chapter11-6-4-service' version = '0.1.0'}repositories { mavenCentral()}dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile("org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}") compile "org.springframework.boot:spring-boot-starter-web:$spring_boot_version"// compile "org.springframework.boot:spring-boot-starter-data-jpa:$spring_boot_version" compile "org.springframework.boot:spring-boot-starter-data-mongodb:$spring_boot_version" testCompile "org.springframework.boot:spring-boot-starter-test:$spring_boot_version" testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"}compileKotlin { kotlinOptions.jvmTarget = "1.8"}compileTestKotlin { kotlinOptions.jvmTarget = "1.8"}

快速開始使用Spring-data-mongodb

若MongoDB的安裝配置采用默認端口,那么在自動配置的情況下,我們不需要做任何參數配置,就能馬上連接上本地的MongoDB。下面直接使用spring-data-mongodb來嘗試對mongodb的存取操作。(記得mongod啟動您的mongodb)

創建要存儲的User實體,包含屬性:id、username、age

import org.springframework.data.annotation.Idimport org.springframework.data.mongodb.core.mapping.Document@Documentdata class User(@Id var id: Long? = -1, var username: String = "", val age: Int? = 0)

實現User的數據訪問對象:UserRepository

import name.quanke.kotlin.chaper11_6_4.entity.Userimport org.springframework.data.mongodb.repository.MongoRepositoryimport org.springframework.stereotype.Repository/** * Created by http://quanke.name on 2018/1/11. */@Repositoryinterface UserRepository : MongoRepository<User, Long> { fun findByUsername(username: String): User}

通過上面的例子,我們可以輕而易舉的對MongoDB進行訪問,但是實戰中,應用服務器與MongoDB通常不會部署于同一臺設備之上,這樣就無法使用自動化的本地配置來進行使用。這個時候,我們也可以方便的配置來完成支持,只需要在application.properties中加入mongodb服務端的相關配置,具體示例如下:

參數配置

在 application.yml 文件中增加

spring: data: mongodb: uri: mongodb://192.168.2.53:27017/test

在嘗試此配置時,記得在mongo中對test庫創建具備讀寫權限的用戶(用戶名為name,密碼為pass),不同版本的用戶創建語句不同,注意查看文檔做好準備工作

若使用mongodb 2.x,也可以通過如下參數配置,該方式不支持mongodb 3.x。

spring: data: mongodb: host: mongodb:localhost spring.data.mongodb.port=27017

單元測試

import name.quanke.kotlin.chaper11_6_4.entity.Userimport name.quanke.kotlin.chaper11_6_4.repository.UserRepositoryimport org.apache.commons.logging.LogFactoryimport org.junit.Testimport org.junit.runner.RunWithimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.boot.test.context.SpringBootTestimport org.springframework.test.context.junit4.SpringRunner/** * Created by http://quanke.name on 2018/1/9. */@RunWith(SpringRunner::class)@SpringBootTestclass ApplicationTests { val log = LogFactory.getLog(ApplicationTests::class.java)!! @Autowired lateinit var userRepository: UserRepository @Test fun `redis string test"`() { userRepository.save(User(1L, "quanke", 30)) userRepository.save(User(2L, "quanke.name", 40)) log.info("數據總條數:${userRepository.count()}") log.info("用戶名字為 quanke : ${userRepository.findByUsername("quanke")}") }}


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日韩免费| 欧美丰满少妇xxxxx做受| 欧美国产日本在线| 亚洲国产91精品在线观看| 性欧美亚洲xxxx乳在线观看| 亚洲国产日韩欧美综合久久| 国产精品一区=区| 亚洲国产欧美自拍| 狠狠综合久久av一区二区小说| 国产一区二区在线免费视频| 97视频在线观看免费高清完整版在线观看| 国产免费成人av| 最新日韩中文字幕| 日韩大片免费观看视频播放| 国产在线观看精品| 欧美精品成人91久久久久久久| 国产精品视频精品| 欧美性猛交xxxx黑人猛交| 欧美日韩在线视频观看| 在线精品视频视频中文字幕| 国产激情久久久| 久久久久久九九九| 欧美专区福利在线| 黑人巨大精品欧美一区二区| 日韩在线观看视频免费| 国产一区香蕉久久| 日韩精品中文字| 欧美激情亚洲一区| 日本成人精品在线| 亚洲欧美国产一本综合首页| 国产精品夫妻激情| 亚洲欧美日本伦理| 欧美在线视频免费观看| 91精品久久久久久久久中文字幕| 国产精品国产三级国产aⅴ浪潮| 久久中文精品视频| 在线看欧美日韩| 亚洲视频第一页| 欧美日韩国产色| 色久欧美在线视频观看| 日本三级韩国三级久久| 久久影院中文字幕| 日韩视频一区在线| 色老头一区二区三区| 欧美日韩在线观看视频小说| 日韩中文在线观看| 九九精品在线播放| 91久久国产婷婷一区二区| 97视频免费在线看| 欧美夜福利tv在线| 亚洲高清色综合| 精品国产91久久久| 国产精品日韩久久久久| 亚洲欧美一区二区精品久久久| 日韩欧美视频一区二区三区| 91天堂在线视频| 日韩成人中文字幕在线观看| 国产亚洲福利一区| 国产专区精品视频| 97视频色精品| 日韩美女福利视频| 国产精品稀缺呦系列在线| 亚洲欧美中文在线视频| 97视频在线观看免费高清完整版在线观看| 日韩视频亚洲视频| 一区二区成人精品| 免费99精品国产自在在线| 亚洲一区二区黄| 成人精品一区二区三区电影黑人| 久久免费视频观看| 日韩欧美福利视频| 国产成人精品日本亚洲| 精品国产91久久久| 97视频在线看| 日本高清+成人网在线观看| 日韩av一区二区在线| 国产亚洲欧美视频| 国产亚洲一区二区精品| 亚洲国产精品电影| 91国内免费在线视频| 亚洲成人av中文字幕| 91精品国产自产91精品| 日韩视频第一页| 成人激情综合网| 91国内精品久久| 欧美日韩亚洲系列| 日韩中文字幕av| 欧美xxxx18性欧美| 成人激情电影一区二区| 日韩亚洲在线观看| 成人国产在线视频| 国内自拍欧美激情| 欧美精品少妇videofree| 欧美丝袜一区二区| 精品国产乱码久久久久久婷婷| 欧美另类高清videos| 日韩中文字幕在线看| 国产免费久久av| 一区二区三区视频免费| 欧美激情综合色综合啪啪五月| 国产成人av在线播放| 色久欧美在线视频观看| 欧美高清视频免费观看| 国产精品日韩精品| 欧美一级淫片播放口| 亚洲精品久久久久久下一站| 久久精品视频在线播放| 在线激情影院一区| 九九热精品视频国产| 久久亚洲成人精品| 欧美日韩国产在线播放| 日韩中文在线观看| 日韩亚洲国产中文字幕| 国产亚洲精品成人av久久ww| 色偷偷av一区二区三区乱| 5278欧美一区二区三区| 精品国产一区久久久| 日韩欧美大尺度| 成人黄色中文字幕| 国产精品成人av在线| 欧美性jizz18性欧美| 久久久久免费视频| 欧美另类高清videos| 中文字幕无线精品亚洲乱码一区| 亚洲最大福利视频| 久久久av网站| 日韩免费观看高清| 久久视频在线播放| 亚洲天堂2020| 亚洲qvod图片区电影| 精品国产一区二区三区久久| 久久精品国产一区二区电影| 亚洲国产成人精品久久久国产成人一区| 日韩中文字幕免费视频| 亚洲激情成人网| 国产精品大陆在线观看| 最近免费中文字幕视频2019| 亚洲xxxxx性| 91在线观看免费高清完整版在线观看| 亚洲韩国青草视频| 98精品国产高清在线xxxx天堂| 亚洲精品资源在线| 国产精品丝袜视频| 亚洲国产精品女人久久久| 精品久久久久久亚洲精品| 九九热这里只有精品免费看| 国产日韩专区在线| 国产欧美一区二区三区久久人妖| 97超碰蝌蚪网人人做人人爽| 亚洲香蕉在线观看| 91免费看片网站| 夜夜嗨av色一区二区不卡| 欧美日韩综合视频网址| 夜夜狂射影院欧美极品| 欧美大片第1页| 欧美日韩国产成人在线观看| 菠萝蜜影院一区二区免费| 日韩精品一二三四区| 国产午夜精品一区二区三区| 日本午夜精品理论片a级appf发布| 日韩av免费在线观看| 国内精品一区二区三区四区| 69久久夜色精品国产7777| 久久久视频在线|