【Java】SpringBoot快速整合mongoDB

发布于:2024-04-15 ⋅ 阅读:(194) ⋅ 点赞:(0)

目录

1.什么是mongoDB?

2.Docker安装mongoDB

3.SpringBoot整合mongoDB步骤

4.验证


1.什么是mongoDB?

        MongoDB是一种非关系型数据库,被广泛用于大型数据存储和分布式系统的构建。MongoDB支持的数据模型比传统的关系型数据库更加灵活,支持动态查询和索引,也支持json格式和bson格式的数据存储,这种格式可以支持读取和写入大量的数据。

基础知识和面试可以参考以下文章进行学习:

MongoDB详解,用心看这篇就够了【重点】-CSDN博客

程序员的50大MongoDB面试问题及答案_mongodb 面试-CSDN博客

2.Docker安装mongoDB

2.1拉取镜像

docker pull mongo

2.2创建容器

docker run -di --name mongo-service --restart=always -p 27017:27017 -v ~/data/mongodata:/data mongo

命令解释:

  • -d:表示在后台运行容器,并返回容器 ID。
  • -i:表示交互式运行容器,保留 STDIN 打开。
  • --name mongo-service:为容器指定一个名称,这里为 mongo-service。
  • --restart=always:表示在容器退出后自动重启容器。
  • -p 27017:27017:将容器的 27017 端口映射到宿主机的 27017 端口。
  • -v ~/data/mongodata:/data:将宿主机的 ~/data/mongodata 目录挂载到容器的 /data 目录下,用于持久化存储数据。
  • mongo:指定要运行的镜像名称,这里为官方的 MongoDB 镜像。

3.SpringBoot整合mongoDB步骤

3.1导入依赖

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

3.2添加mongo配置

server:
  port: 9998
spring:
  data:
    mongodb:
      host: 127.0.0.1
      port: 27017
      database: mongodb-demo

3.3添加映射

import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;
import java.util.Date;

/**
 * 映射表 test_demo
 */
@Data
@Document("test_demo")
public class TestDemo implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id;

    private String name;

    private Date birthDay;

}

 3.4测试:

/**
 * MongoDB测试类
 * */
@SpringBootTest(classes = MongoApplication.class)
@RunWith(SpringRunner.class)
public class MongoTest1 {


    @Autowired
    private MongoTemplate mongoTemplate;

    //保存
    @Test
    public void saveTest(){
        for (int i = 0; i < 10; i++) {
            TestDemo testDemo = new TestDemo();
            testDemo.setName("张三");
            testDemo.setBirthDay(new Date());
            mongoTemplate.save(testDemo);
        }
        TestDemo testDemo = new TestDemo();
        testDemo.setName("张三你吃饭了吗");
        testDemo.setBirthDay(new Date());
        mongoTemplate.save(testDemo);

    }

    //查询一个
    @Test
    public void saveFindOne(){
        TestDemo testDemo = mongoTemplate.findById("661743b77bee2f0a5739819d", TestDemo.class);
        System.out.println(testDemo);
        //TestDemo(id=661743b77bee2f0a5739819d, name=张三, birthDay=Thu Apr 11 09:58:15 CST 2024)
    }

    //条件查询
    @Test
    public void testQuery(){
        //查询字段name为张三的数据(多条件查询)
        Query query = Query.query(Criteria.where("name").is("张三"))
                .with(Sort.by(Sort.Direction.DESC,"birthDay"));

        // 执行查询 模糊查询 只查询5条数据
        Query query1 = Query.query(Criteria.where("name").regex(".*?\\" + "张三" + ".*"));
        query.limit(5);

        List<TestDemo> list = mongoTemplate.find(query, TestDemo.class);
        List<TestDemo> list1 = mongoTemplate.find(query1, TestDemo.class);

        System.out.println("list:"+list);
        System.out.println("list1:"+list1);

    }

    //测试删除
    @Test
    public void testDel(){
        mongoTemplate.remove(Query.query(Criteria.where("name").is("张三")),TestDemo.class);
    }
}

4.验证

4.1连接mongoDB

4.2查看数据

这样就使用SpringBoot整合了mongoDB并写了一个简单的案例。 


网站公告

今日签到

点亮在社区的每一天
去签到