Spring Boot集成Spring Data MongoDB实现MongoDB操作

1. 添加依赖

pom.xml文件中添加Spring Data MongoDB的依赖。如果你使用的是Spring Boot 3.x,依赖如下:

<dependencies>
    <!-- Spring Boot Starter Data MongoDB -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
</dependencies>

如果你使用的是Spring Boot 2.x,依赖类似,但版本号会有所不同。


2. 配置MongoDB连接

application.propertiesapplication.yml文件中配置MongoDB的连接信息。以下是常见的配置项:

application.properties

# MongoDB配置
spring.data.mongodb.uri=mongodb://username:password@host:port/database
spring.data.mongodb.database=your_database_name
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017

application.yml

yaml复制

spring:
  data:
    mongodb:
      uri: mongodb://username:password@host:port/database
      database: your_database_name
      host: 127.0.0.1
      port: 27017

如果MongoDB没有用户名和密码,可以省略usernamepassword部分。


3. 创建MongoDB实体类

创建一个实体类,用@Document注解标注,表示这是一个MongoDB的集合(Collection)。

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

@Document(collection = "users") // 指定集合名称
public class User {
    @Id // 主键注解
    private String id;

    private String name;
    private int age;

    // Getters and Setters
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

4. 创建MongoDB操作接口

Spring Data MongoDB提供了MongoRepository接口,可以自动生成CRUD操作的方法。

import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, String> {
    // 自定义查询方法
    List<User> findByName(String name);
}

通过继承MongoRepository,你可以直接使用以下方法:

  • save():保存或更新文档

  • findById():根据ID查询文档

  • findAll():查询所有文档

  • deleteById():根据ID删除文档


5. 使用MongoDB操作

在Service层或Controller层中注入UserRepository,并使用它来操作MongoDB。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public User getUserById(String id) {
        return userRepository.findById(id).orElse(null);
    }

    public List<User> getUsersByName(String name) {
        return userRepository.findByName(name);
    }

    public void deleteUserById(String id) {
        userRepository.deleteById(id);
    }
}

6. 测试

启动Spring Boot应用后,你可以通过Controller层调用UserService的方法来测试MongoDB的CRUD操作。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable String id) {
        return userService.getUserById(id);
    }

    @GetMapping("/name/{name}")
    public List<User> getUsersByName(@PathVariable String name) {
        return userService.getUsersByName(name);
    }

    @DeleteMapping("/{id}")
    public void deleteUserById(@PathVariable String id) {
        userService.deleteUserById(id);
    }
}

7. 注意事项

  1. MongoDB版本兼容性:确保MongoDB的版本与Spring Data MongoDB的版本兼容。

  2. 索引优化:如果需要高性能查询,可以在实体类中使用@Indexed注解为字段添加索引。

  3. 事务支持:MongoDB从4.0开始支持事务,Spring Data MongoDB也支持事务管理,但需要配置事务管理器。

posted @   软件职业规划  阅读(104)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示