Spring Boot整合MongoDB

一、环境搭建

第一步:在pom.xml文件中引入下述依赖,当前Spring Boot的版本为 2.7.6

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
    <version>2.7.6</version>
</dependency>

最终完整的pom.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.6</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.bc</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

第二步: 在application.yml文件配置连接MongoDB

如果MongoDB没有设置密码,则在application.yml文件可以这样配置连接MongoDB:

spring:
  data:
    mongodb:
      uri: mongodb://ip:端口/数据库名

如果MongoDB设置了密码,则在application.yml文件需要这样配置:

spring:
  data:
    mongodb:
      uri: mongodb://账号:密码@ip:端口/数据库名

当前MongoDB没有设置密码,因此最终在application.yml文件中的配置如下: 

  

二、集合操作

2.1 创建集合

使用 show collections; 命令查看user库中的集合: 

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;

import javax.annotation.Resource;

@SpringBootTest
class DemoApplicationTests {

	@Resource
	private MongoTemplate mongoTemplate;

	@Test
	public void testCreateCollection() {
		mongoTemplate.createCollection("users"); // 参数,创建集合名称
	}
}

执行上述代码,再次查看user库中的集合,这时就会发现已经新增了一个users集合:

如果库中已经存在了对应的集合时,执行上述代码去创建集合是会报错的,因此可以对上述代码进行一个优化: 

@Test
public void testCreateCollection() {
	Boolean exists = mongoTemplate.collectionExists("users");
	if(!exists){
		mongoTemplate.createCollection("users"); // 参数,创建集合名称
	}
}

2.2 删除集合

@Test
public void testDeleteCollection() {
	mongoTemplate.dropCollection("users"); // 参数,创建集合名称
}

三、相关注解

@Document

  • 修饰范围:用在类上
  • 作用:用来映射这个类的一个对象为mongo中一条文档数据
  • 属性:(value、collection)用来指定操作的集合名称

@Id

  • 修饰范围:用在成员变量、方法上
  • 作用:用来将成员变量的值映射为文档的_id的值

@Field

  • 修饰范围:用在成员变量、方法上
  • 作用:用来将成员变量以及值映射为文档中一个key、value对
  • 属性:(name,value)用来指定在文档中 key的名称,默认为成员变量名

@Transient

  • 修饰范围:用在成员变量、方法上
  • 作用:用来指定该成员变量不参与文档的序列化

四、文档操作

4.1 添加文档

package com.bc.demo.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.util.Date;

@Document(value = "users") //这个类实例就代表MongoDB中的一条文档
public class User {

    @Id
    private Integer id;
    @Field(value = "username")
    private String name;
    @Field
    private Double salary;
    @Field
    private Date birthday;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                ", birthday=" + birthday +
                '}';
    }

    public User() {
    }

    public User(Integer id, String name, Double salary, Date birthday) {
        this.id = id;
        this.name = name;
        this.salary = salary;
        this.birthday = birthday;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public Date
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值