前言
大家都知道MySQL數據庫很好用,但數據量到了千萬以上了,想增加字段是非常痛苦的,這個在MongoDB里就不存在,字段想怎么加就怎么加,所以也就有了想在spring-boot里用MongoDB的想法了,Github上spring-projects里有關于使用MongoDB的demo,后面會給出鏈接
依賴
1
2
3
4
5
6
7
8
9
10
|
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> //還有一個依賴,官方demo里加的有,這個應該是啟動的時候幫你下載mongodb數據庫的,反正我是沒有成功下載下來過,一直timeout,如果系統上裝的有mongodb了,就不用要這個依賴了 <dependency> <groupId>de.flapdoodle.embed</groupId> <artifactId>de.flapdoodle.embed.mongo</artifactId> </dependency> |
配置
實體類只用加一個@Id就可以了
1
2
3
4
5
6
7
8
9
10
|
import org.springframework.data.annotation.Id; public class User { @Id private String id; private String username; // getter, setter } |
數據庫配置
1
2
3
4
5
6
7
8
9
10
|
spring: freemarker: template-loader-path: - file:./templates data: mongodb: database: dbname #一般只用配置這一個就可以了,如果數據庫有密碼,還要配置下面幾個配置 host: password: uri: |
Repository要繼承的是MongoRepository,跟蹤代碼可以發現MongoRepository繼承的就是PagingAndSortingRepository,所以分頁之類的一些簡單的方法也是可以直接拿來用的,非常方便
1
2
3
|
public interface UserRepository extends MongoRepository<User, String> { User findByUsername(String username); } |
spring-data怎么用,這里就怎么用
關聯
MongoDB在spring-boot里沒法做關聯,所以用MySQL做關聯的 @ManyToOne 這些注解也就不能用了
經我測試,如果在Blog實體類里引入User對象,在保存Blog的時候,User對象也會保存在Blog里,如下所示
1
2
3
4
5
6
7
8
9
10
11
12
|
{ "_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是不會變的,所以這里建議關聯只給一個id,在查詢的時候用id去查user,再封裝到一塊比較好
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
參考
原文鏈接:https://tomoya92.github.io/2017/09/27/spring-boot-mongodb/