初识MongoDB(十五) SpringBoot整合MongoDB

  • Post author:
  • Post category:其他


之前我们介绍的 MongoDB 的操作都是在 shell 命令中写的,在项目开发时,我们当然都是用程序去操作 MongoDB 的,本文来看看 SpringBoot 是如何整合 MongoDB 的。

Maven依赖

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

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

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
</dependency>

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

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

配置YML

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

实体类

创建实体类User,与 MongoDB 中的集合建立映射关系。

@Document(collection = "user")
@Data
public class User implements Serializable {

    @Indexed
    private int id;

    @Indexed
    private String name;

    private int age;

    private String sex;

    @Field("phone")
    private String mobile;

    private String address;

}

注解说明:

@Document 标注在实体类上,标明由 MongoDB 进行实例化。通过 collection 参数指定 MongoDB 中的集合。

@Indexed 声明该属性对应的字段需要加索引。通过 unique 参数标识是否是唯一索引,默认 false。

@Field 声明该属性对应的 MongoDB 中的字段名。

Service实现

@Component
public class UserService {

    @Resource
    private MongoTemplate mongoTemplate;

    public void insert(User user) {
        mongoTemplate.insert(user);
    }

    public void deleteByName(String name) {
        Query query = new Query(Criteria.where("name").is(name));
        mongoTemplate.remove(query, User.class);
    }

    public void updateByName(String name, String key, String value) {
        Query query = new Query(Criteria.where("name").is(name));
        mongoTemplate.updateFirst(query, Update.update(key, value), User.class);
    }

    public User queryByName(String name) {
        Query query = new Query(Criteria.where("name").is(name));
        return mongoTemplate.findOne(query, User.class);
    }

    public List<User> queryAll() {
        return mongoTemplate.findAll(User.class);
    }

}

测试类

@SpringBootTest
@RunWith(SpringRunner.class)
public class UserTest {

    @Resource
    private UserService userService;

    @Test
    public void testInsert() {
        User user = new User();
        user.setId(4);
        user.setName("nameicc");
        user.setSex("boy");
        user.setAge(26);
        user.setMobile("13131313131");
        user.setAddress("Qingdao");
        userService.insert(user);
    }

    @Test
    public void testDelete() {
        userService.deleteByName("nameicc");
    }

    @Test
    public void testUpdate() {
        userService.updateByName("nameicc", "address", "Shandong Qingdao");
    }

    @Test
    public void testQueryByName() {
        User user = userService.queryByName("nameicc");
        System.out.println(user);
    }

    @Test
    public void testQueryList() {
        List<User> userList = userService.queryAll();
        System.out.println(userList);
    }

}

总结

本文只是简单完成增删改查操作,SpringBoot 整合 MongoDB 还有很多知识待探索。



版权声明:本文为tingyu1995原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。