0
点赞
收藏
分享

微信扫一扫

springboot整合MongoDB 简单的操作

犹大之窗 2022-02-11 阅读 75

1.创建springboot项目引入依赖

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

  <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

上面除了MongoDB还有lombok的依赖

配置文件路径

 虚拟机地址;端口号/数据库名称

2.创建对应的实体类

package com.example.mongodb.entity;

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

@Data
@Document("User")//指定数据库中的集合(相当于mysql中的表)
public class User {

    @Id
    private String id;
    private String name;
    private String email;
    private String createDate;
    private Integer age;

}

我们应用lombok简化开发@Data帮我们生成get和set方法

@Document("User")//指定数据库中的集合(相当于mysql中的表)

@Id 就是指定这个属性对应MongoDB数据库集合中_id的属性

3.引用MongoTemplate

spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足。

我们在测试类中进行测试

3.1添加记录方法

    @Test
    public void createMg(){
        Student student=new Student();
        student.setAge(33);
        student.setName("DFP_test");
        student.setEmail("963369@cc.com");
        Student student1 = mongoTemplate.insert(student);
        System.out.println("查询MG的数据:"+student);
    }

用MongoTemplate给我们封装好的insert方法我们吧 设置好的数据传入即可

执行程序查看结果控制台输出了我们传入的数据

 到linux下的MongoDB查看

输入命令发现成功写入数据 

我们插入多几个数据方便做测试结果如下

3.2查询数据库数据

    @Test
    public void findMg(){
        List<Student> studentList = mongoTemplate.findAll(Student.class);
        for (Student s:studentList) {
            System.out.println("查询的数据:"+s);
        }
    }

结果

和linux数据库查询到的数据一致 

3.3根据Id查询数据

除了要传入id的值也要传入对应实体类的class

    @Test
    public void findByID(){
        Student student = mongoTemplate.findById("620496a5949a122fa0cc3f1f", Student.class);
        System.out.println("根据ID查询:"+student);

    }

参考上面的图和linux下的数据一致 

3.4条件查询方法

查询名字为张三并且年龄也是91的数据

    @Test
    public void findList(){
        Query query=new Query(Criteria.where("name").is("张三").and("age").is(91));
        List<Student> tList = mongoTemplate.find(query, Student.class);
        System.out.println("条件查询:"+tList);
    }
mongoTemplate.find(query, Student.class)

需要传入2个参数一个是条件构造的对象,另一个就是对于实体类的class

条件构造的对象我们用Query来构建

 3.5模糊查询

查询名字包含o的

@Test
    public void findLikeList(){
        String likeName="o";//自定义的常量
        String reges=String.format("%s%s%s", "^.*", likeName, ".*$");//匹配规则

        Pattern pattern=Pattern.compile(reges,Pattern.CASE_INSENSITIVE);//正则匹配规则--pattern的常量
        Query query =new Query(Criteria.where("name").regex(pattern));

        List<Student> studentList=mongoTemplate.find(query,Student.class);
    for (Student s:studentList) {
        System.out.println("模糊查询:"+s);
    }
}

还是调用mongoTemplate.find(query,Student.class);方法,传入条件构造的对象

因为我们是要模糊查询,不同于mysql的like方法我们在这要用到正则匹配规则,需要要用到Pattern 来构造模糊条件。

通过String.format创建模糊规则传入Pattern构建 再将构建好 的条件传入Query构造对象。

 

举报

相关推荐

0 条评论