spring boot項目中MongoDB的使用方法
前言
大家都知道MySQL數(shù)據(jù)庫很好用,但數(shù)據(jù)量到了千萬以上了,想增加字段是非常痛苦的,這個在MongoDB里就不存在,字段想怎么加就怎么加,所以也就有了想在spring-boot里用MongoDB的想法了,Github上spring-projects里有關(guān)于使用MongoDB的demo,后面會給出鏈接
依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> //還有一個依賴,官方demo里加的有,這個應(yīng)該是啟動的時候幫你下載mongodb數(shù)據(jù)庫的,反正我是沒有成功下載下來過,一直timeout,如果系統(tǒng)上裝的有mongodb了,就不用要這個依賴了 <dependency> <groupId>de.flapdoodle.embed</groupId> <artifactId>de.flapdoodle.embed.mongo</artifactId> </dependency>
配置
實(shí)體類只用加一個@Id就可以了
import org.springframework.data.annotation.Id; public class User { @Id private String id; private String username; // getter, setter }
數(shù)據(jù)庫配置
spring: freemarker: template-loader-path: - file:./templates data: mongodb: database: dbname #一般只用配置這一個就可以了,如果數(shù)據(jù)庫有密碼,還要配置下面幾個配置 host: password: uri:
Repository要繼承的是MongoRepository,跟蹤代碼可以發(fā)現(xiàn)MongoRepository繼承的就是PagingAndSortingRepository,所以分頁之類的一些簡單的方法也是可以直接拿來用的,非常方便
public interface UserRepository extends MongoRepository<User, String> { User findByUsername(String username); }
spring-data怎么用,這里就怎么用
關(guān)聯(lián)
MongoDB在spring-boot里沒法做關(guān)聯(lián),所以用MySQL做關(guān)聯(lián)的 @ManyToOne 這些注解也就不能用了
經(jīng)我測試,如果在Blog實(shí)體類里引入User對象,在保存Blog的時候,User對象也會保存在Blog里,如下所示
{ "_id" : ObjectId("59cb127b23d8213c8dfdcad9"), "_class" : "com.example.module.blog.model.Blog", "title" : "hello world", "content" : "hello world", "inTime" : ISODate("2017-09-27T02:52:43.713+0000"), "user" : { "_id" : ObjectId("59cb0fec23d8213930c6795a"), "username" : "tomoya", "inTime" : ISODate("2017-09-27T02:41:48.402+0000") } }
如果修改User的username,只會修改user表里的username,blog表里的user對象里的username是不會變的,所以這里建議關(guān)聯(lián)只給一個id,在查詢的時候用id去查user,再封裝到一塊比較好
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
參考
相關(guān)文章
云服務(wù)器環(huán)境搭建及部署(jdk、mysql、redis、nginx環(huán)境搭建)詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于云服務(wù)器環(huán)境搭建及部署(jdk、mysql、redis、nginx環(huán)境搭建)詳細(xì)步驟的相關(guān)資料,要在云服務(wù)器上搭建JDK、MySQL、Redis和Nginx的環(huán)境,可以按照以下步驟進(jìn)行操作,需要的朋友可以參考下2024-01-01SpringBoot集成Spring Security的方法
Spring security,是一個強(qiáng)大的和高度可定制的身份驗(yàn)證和訪問控制框架。這篇文章主要介紹了SpringBoot集成Spring Security的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java簡化復(fù)雜系統(tǒng)調(diào)用的門面設(shè)計模式
Java門面模式是一種結(jié)構(gòu)性設(shè)計模式,它為復(fù)雜系統(tǒng)提供了一個簡單的接口,使得系統(tǒng)的客戶端能夠更加方便地使用系統(tǒng)功能。門面模式通過封裝復(fù)雜的子系統(tǒng),隱藏系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),提高了系統(tǒng)的易用性和靈活性2023-04-04Spring Boot 實(shí)現(xiàn)配置文件加解密原理
這篇文章主要介紹了Spring Boot 實(shí)現(xiàn)配置文件加解密原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06詳解Java利用同步塊synchronized()保證并發(fā)安全
這篇文章主要介紹了Java利用同步塊synchronized()保證并發(fā)安全,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03java循環(huán)刪除List元素報錯的原因分析與解決
大家在工作中應(yīng)該都會遇到從List集合中刪除某一個或多個元素的業(yè)務(wù)場景,相信大家都會避開在循環(huán)里面刪除元素,使用其他方式處理,這是為什么呢,下面小編就來和大家詳細(xì)聊聊2023-11-11