springboot整合mongodb,操作mongodb数据库常见的CRUD

本文介绍了如何在SpringBoot应用中集成MongoDB,通过添加依赖、配置数据库连接,创建实体类和使用MongoTemplate,实现用户数据的插入、批量插入、更新、删除、单个查询、分页查询等基本操作。

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

这篇我们要说的是springboot整合mongodb,并进行常见的CRUD操作

应用软件

  • idea 2022
  • mongodb6.x
  • mongodb-compass
  • windows11

首先我们需要先下载启动mongodb服务

我们可以先用win+R输入cmd打开window命令提示窗,输入net start命令查看正在启动的服务
也可以打开服务列表进行查看。

1.我们需要先引入mongodb的依赖

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

2.配置application.yaml(没有设置mongodb密码的方式)

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/user

3.创建user库以及要操作的集合(这里我用的mongodb-compass可视化工具)

在这里插入图片描述

4.创建与user集合对应的实体类。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document("user")  //标注该类对应的是mongodb数据库的user集合
public class User {
    @Id //指定id
    private Integer id;

    private String name;

    private Integer age;
}

5.MongoTemplate自动装配

  	private final MongoTemplate mongoTemplate;
  	
    @Autowired
    public Mongodbdemo02ApplicationTests(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

6.单个插入

	/**
     * mongodb插入单条数据
     */
    @Test
    void insertOne() {
        User user = new User(1, "coderGAP", 18);
        mongoTemplate.save(user);
    }

执行结果
在这里插入图片描述

7.批量插入

	/**
     * mongodb批量插入
     */
    @Test
    void insertMany(){
        List<User> userList = new ArrayList<>();
        for (int i = 2; i <= 9999; i++) {
            userList.add(new User(i,"CoderGAP" + i,18));
        }
        mongoTemplate.insertAll(userList);
    }

执行结果
在这里插入图片描述

8.修改

	/**
     * 修改(将id为1的name值修改为‘我是mongodb数据库’)
     */
    @Test
    void update(){
        mongoTemplate.updateFirst(
                Query.query(Criteria.where("_id").is(1)), BasicUpdate.update("name","我是mongodb数据库"),"user");
    }

执行结果
在这里插入图片描述

9.删除文档

	/**
     * 删除文档
     */
    @Test
    void DeleteDocument(){
        mongoTemplate.remove(Query.query(Criteria.where("_id").is(1)), "user");
    }

10.删除集合

	/**
     * 删除整个集合
     */
    @Test
    void DeleteCollection(){
        mongoTemplate.dropCollection(User.class);
    }

11.单个查看

	/**
     * 单个查  也就是按照条件查询
     */
    @Test
    void findOne(){
        List<User> userList = mongoTemplate.find(Query.query(Criteria.where("_id").is(1)), User.class);
        userList.forEach(System.out::println);
    }

执行结果
在这里插入图片描述

12.通过ID查询

	/**
     * 通过Id进行查询
     */
    @Test
    void findByID(){
        User byId = mongoTemplate.findById(2, User.class);
        System.out.println(byId);
    }

执行结果
在这里插入图片描述

13.批量查

	/**
     * 批量查
     */
    @Test
    void find(){
        List<User> userList = mongoTemplate.findAll(User.class);
        userList.forEach(System.out::println);
    }

执行结果
在这里插入图片描述

14.分页

	/**
     * mongodb分页
     */
    @Test
    void page(){
        List<User> userList = mongoTemplate.find(
                Query.query(Criteria.where("age").is(18)).skip(8).limit(10), User.class);
        userList.forEach(System.out::println);
    }

执行结果
在这里插入图片描述

要在Spring Boot中使用MongoDB,需要添加MongoDB驱动程序依赖项。可以通过在pom.xml文件中添加以下依赖项来完成此操作: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 接下来,您需要在application.properties文件中配置MongoDB连接属性。以下是示例配置: ``` spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mydb spring.data.mongodb.username=myuser spring.data.mongodb.password=mypassword ``` 在这个例子中,我们将连接到本地MongoDB实例,端口号为27017,数据库名为mydb,使用名为myuser和mypassword的凭据进行身份验证。 要查看MongoDB中的所有数据库,可以使用以下命令: ``` show dbs ``` 要切换到另一个数据库,可以使用以下命令: ``` use databasename ``` 在Spring Boot应用程序中,您可以使用MongoTemplate类执行MongoDB操作。以下是一个示例代码片段,它演示了如何获取MongoDB数据库列表并切换到另一个数据库: ```java @Autowired private MongoTemplate mongoTemplate; public List<String> getAllDatabases() { MongoIterable<String> dbs = mongoTemplate.getDb().listDatabaseNames(); List<String> databaseNames = new ArrayList<>(); for (String db : dbs) { databaseNames.add(db); } return databaseNames; } public void switchDatabase(String databaseName) { mongoTemplate.getDb().getMongoClient().close(); mongoTemplate.setDatabaseName(databaseName); mongoTemplate.getDb().command("ping"); } ``` 在这个例子中,我们注入了MongoTemplate类,然后使用它来获取所有数据库名称,以及切换到另一个数据库。请注意,切换到另一个数据库时,我们需要先关闭现有的MongoClient连接,然后重新设置MongoTemplate的数据库名称,并使用ping命令测试新的MongoClient连接是否可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值