SpringBoot整合MongoDB
https://docs.spring.io/spring-boot/docs/current/reference/html/data.html#data.nosql.mongodb.repositories
注意关注MongoDB服务端和客户端之间的版本兼容问题:https://docs.spring.io/spring-data/mongodb/reference/preface.html
环境准备
- 引入依赖
<!--spring data mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
-
配置文件的编写
server: port: 8088 spring: application: name: mongdb-server data: mongodb: uri: mongodb://hushang:[email protected]:27017/test?authSource=admin # uri等同于下面的配置 # database: test # host: 192.168.75.100 # port: 27017 # username: hushang # password: 123456 # authentication-database: admin
连接配置参考文档:https://docs.mongodb.com/manual/reference/connection-string/
-
测试
// LearnMongodbApplicationTest为我们在测试包下定义的主启动类 public class MongoTemplateTests extends LearnMongodbApplicationTest{ @Autowired private MongoTemplate mongoTemplate; @Test public void testCollection(){ boolean exists = mongoTemplate.collectionExists("emp"); if (exists){ // 删除集合 mongoTemplate.dropCollection("emp"); } // 如果不存在则创建 mongoTemplate.createCollection("emp"); } }
文档操作
相关注解
-
@Document
- 修饰范围: 用在类上
- 作用: 用来映射这个类的一个对象为mongo中一条文档数据。
- 属性:( value 、collection )用来指定操作的集合名称
-
@Id
- 修饰范围: 用在成员变量、方法上
- 作用: 用来将成员变量的值映射为文档的_id的值
-
@Field
- 修饰范围: 用在成员变量、方法上
- 作用: 用来将成员变量及其值映射为文档中一个key:value对。
- 属性:( name , value )用来指定在文档中 key的名称,默认为成员变量名
-
@Transient
- 修饰范围:用在成员变量、方法上
- 作用:用来指定此成员变量不参与文档的序列化
创建实体
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field<