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

首頁 > 數據庫 > MongoDB > 正文

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

2020-10-29 18:44:27
字體:
來源:轉載
供稿:網友

我們在產品中用到 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"http:// 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")}") }}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂成人在线| 中文字幕在线观看日韩| 91久久中文字幕| 国产一区二区日韩精品欧美精品| 91亚洲人电影| 久久久国产在线视频| 欧美日在线观看| 国产日韩在线一区| 日韩av最新在线| 国产日产久久高清欧美一区| 欧美亚洲成人网| 欧美激情亚洲视频| 成人免费福利在线| 成人国产精品日本在线| 国产成人精品综合久久久| 在线观看国产精品日韩av| 精品女同一区二区三区在线播放| 亚洲欧美激情精品一区二区| 夜夜嗨av色综合久久久综合网| 国产一区二区精品丝袜| 日av在线播放中文不卡| 国产精品情侣自拍| 日韩欧美中文字幕在线观看| 国产一区在线播放| 国产日韩欧美成人| 在线亚洲国产精品网| 日韩av电影在线播放| 久久久久久久久国产| 欧美美最猛性xxxxxx| 精品久久久中文| 超碰97人人做人人爱少妇| 久久视频国产精品免费视频在线| 欧美激情视频在线免费观看 欧美视频免费一| 日韩国产激情在线| www.亚洲免费视频| 国产精品视频在线播放| 欧美精品久久一区二区| 97国产精品视频人人做人人爱| 美日韩在线视频| 亚洲第一精品夜夜躁人人躁| 亚洲欧美福利视频| 久久久成人的性感天堂| 色yeye香蕉凹凸一区二区av| 日韩大胆人体377p| 在线观看欧美成人| 国产日韩欧美电影在线观看| 亚洲精品美女免费| 亚洲春色另类小说| 美女精品视频一区| 91精品久久久久久久久久久久久| 亚洲天堂网站在线观看视频| 国产精品电影观看| 国产a级全部精品| 久青草国产97香蕉在线视频| 2021国产精品视频| 亚洲护士老师的毛茸茸最新章节| 亚洲国产成人爱av在线播放| 成年人精品视频| 神马久久桃色视频| 亚洲综合日韩在线| 欧美另类极品videosbest最新版本| 日韩在线视频免费观看| 欧美激情视频给我| 国产精品扒开腿爽爽爽视频| 欧美激情精品久久久久久免费印度| 亚洲免费精彩视频| 日韩成人在线免费观看| 欧美日韩中文在线观看| 精品日韩视频在线观看| 国产精品劲爆视频| 久久夜色精品国产亚洲aⅴ| 在线电影中文日韩| 久久久国产精品亚洲一区| 亚洲欧美视频在线| 亚洲成人精品在线| 久久91精品国产91久久久| 国产精品96久久久久久又黄又硬| 国产精品久久91| 日本不卡高字幕在线2019| 亚洲国产毛片完整版| 精品视频9999| 欧美电影在线观看高清| 九九热精品视频国产| 欧美www视频在线观看| 中文字幕av一区二区| 日韩av最新在线| 欧美日韩亚洲视频| 精品成人69xx.xyz| xxx欧美精品| 亚洲国产女人aaa毛片在线| 国产91免费观看| 久久久久日韩精品久久久男男| 欧美黑人狂野猛交老妇| 91久久精品国产91久久性色| 欧美成人性生活| 亚洲欧美日韩视频一区| 国外色69视频在线观看| 精品久久久香蕉免费精品视频| 永久555www成人免费| 欧美性视频网站| 久久色免费在线视频| 久久九九热免费视频| 国产精品日韩欧美综合| 国产综合在线观看视频| 91久久久久久国产精品| 91精品国产91久久久久福利| 国产xxx69麻豆国语对白| 国产精品永久在线| 欧美日韩亚洲视频| 久久亚洲精品视频| 国产中文欧美精品| 国产亚洲精品久久久久动| 成人性生交大片免费看小说| 欧美日韩一区二区三区| 韩国v欧美v日本v亚洲| 国产不卡视频在线| 91视频九色网站| 日韩欧美中文字幕在线播放| 亚洲一区999| 久久精品成人动漫| 欧美日韩另类字幕中文| 日韩中文av在线| 国产亚洲精品久久| 亚洲国产精品小视频| 成人免费在线网址| 日韩人体视频一二区| 欧美激情国产高清| 一本色道久久综合亚洲精品小说| 欧美日韩在线视频一区| 97精品伊人久久久大香线蕉| 欧美另类在线播放| 中文字幕不卡在线视频极品| 日韩精品视频在线免费观看| 久久好看免费视频| 国产精品免费看久久久香蕉| 日韩在线视频国产| 久久久久久伊人| 久久久中精品2020中文| 国产成人在线视频| 欧美成人午夜激情视频| 久久精品亚洲94久久精品| 亚洲大胆人体在线| 亚洲综合一区二区不卡| 精品人伦一区二区三区蜜桃免费| 欧美日韩精品中文字幕| 久久夜色精品国产亚洲aⅴ| 欧美丝袜一区二区三区| 欧美国产日韩免费| 亚洲最大的成人网| 日韩理论片久久| 亚洲国产精品视频在线观看| 国产成人综合一区二区三区| 亚洲一区二区三区乱码aⅴ| 国产精品久久久久久久久久小说| 国产91精品网站| 欧美日本国产在线| 91国产美女在线观看| 97香蕉超级碰碰久久免费软件| 日韩在线观看免费高清| 97在线视频免费看| 中文字幕在线看视频国产欧美在线看完整| 日韩视频在线免费观看| 庆余年2免费日韩剧观看大牛| 国产一区二区免费|