SpringBoot 整合 MongoDB

本文介绍了如何将SpringBoot与MongoDB进行整合,包括添加依赖、配置数据库连接、创建实体类、定义Repository以及进行测试。SpringBoot提供了自动化配置,使得MongoDB的集成变得简单易行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB 是一个面向文档的数据库管理系统,它是一个介于关系型数据库和非关系型数据库之间的产品,支持一种类似 JSONBSON 数据格式,既可以存储简单的数据格式,也可以存储复杂的数据类型。MongoDB 最大的特点是它支持的查询语言非常强大,并且还支持对数据建立索引。借助于 Spring Data MongoDB, SpringBoot 为 MongoDB 也提供了开箱即用的自动化配置方案,具体配置步骤如下:

  1. 添加依赖
<!-- MongoDB -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
  1. application.properties 中配置 MongoDB 的连接信息,代码如下:
### MongoDB
# 验证登录信息的库
spring.data.mongodb.authentication-database=admin
# 要连接的库,认证信息不一定要在连接的库中创建,因此这两个分开配置
spring.data.mongodb.database=test
spring.data.mongodb.host=192.168.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.username=scott
spring.data.mongodb.password=scott
  1. 创建实体类
public class Book {
    private Integer bookId;
    private String name;
    private String author;
    private Float price;
    private Date publicationDate;

    // 省略 getter/setter
    @Override
    public String toString() {
        return "Book { bookId: " + bookId + "; name: " + name + "; author: " + author
                + "; price: " + price + "; publicationDate: " + publicationDate + "}";
    }
}
使用 MongoRepository
  1. 创建 BookDAO
import org.springframework.data.mongodb.repository.MongoRepository;
import xyz.ther.boot.pojo.Book;

import java.util.List;

public interface BookDAO extends MongoRepository<Book, Integer> {

    List<Book> findByAuthorContains(String author);

    Book findByNameEquals(String name);
}
  • MongoRepository 中已经预定义了针对实体类的查询、 添加、删除等操作。
  1. 创建 Controller
@RestController
public class BookController {
    @Autowired
    BookDAO bookDAO;

    @GetMapping("/mongodbTest1")
    public void mongodbTest1() {
        List<Book> bookList = new ArrayList<>();
        Book book1 = new Book();
        book1.setBookId(1);
        book1.setName("中文书");
        book1.setAuthor("匿名");
        bookList.add(book1);
        Book book2 = new Book();
        book2.setBookId(2);
        book2.setName("中文书 2");
        book2.setAuthor("匿名 2");
        bookList.add(book2);
        bookDAO.insert(bookList);
        List<Book> bookList1 = bookDAO.findByAuthorContains("匿名");
        System.out.println(bookList1);
        Book returnBook = bookDAO.findByNameEquals("中文书");
        System.out.println(returnBook);
    }
}
  1. 测试结果
[Book { bookId: 1; name: 中文书; author: 匿名; price: null; publicationDate: null}, Book { bookId: 2; name: 中文书 2; author: 匿名 2; price: null; publicationDate: null}]
Book { bookId: 1; name: 中文书; author: 匿名; price: null; publicationDate: null}
使用 MongoTemplate

除了继承 MongoRepository 外, Spring Data MongoDB 还提供了 MongoTemplate 用来方便地操作 MongoDB。在 Spring Boot 中,若添加了 MongoDB 相关的依赖 ,且开发者并没有提供 MongoTemplate ,则默认会有一个 MongoTemplate 注册到 Spring 容器中,相关配置源码在 MongoDataAutoConfiguration 类中 。因此,用户可以直接使用 MongoTemplate,在 Controller 中直接注入 MongoTemplate 就可以使用了。

  1. 创建 Controller
@RestController
public class BookController {
    @Autowired
    MongoTemplate mongoTemplate;

    @GetMapping("/mongodbTest2")
    public void mongodbTest2() {
        List<Book> bookList = new ArrayList<>();
        Book book1 = new Book();
        book1.setBookId(3);
        book1.setName("英文书");
        book1.setAuthor("Unknown");
        bookList.add(book1);
        Book book2 = new Book();
        book2.setBookId(4);
        book2.setName("英文书 2");
        book2.setAuthor("Unknown 2");
        bookList.add(book2);
        mongoTemplate.insertAll(bookList);
        List<Book> bookList1 = mongoTemplate.findAll(Book.class);
        System.out.println(bookList1);
        Book returnBook = mongoTemplate.findById("5e3a3924ef21ec46a0f33386", Book.class);
        System.out.println(returnBook);
    }
}
  1. 测试结果
[Book { bookId: 1; name: 中文书; author: 匿名; price: null; publicationDate: null}, Book { bookId: 2; name: 中文书 2; author: 匿名 2; price: null; publicationDate: null}, Book { bookId: 3; name: 英文书; author: Unknown; price: null; publicationDate: null}, Book { bookId: 4; name: 英文书 2; author: Unknown 2; price: null; publicationDate: null}]
Book { bookId: 1; name: 中文书; author: 匿名; price: null; publicationDate: null}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值