巜丨 發表於 2025-2-19 12:10:00

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

<h3 id="1-添加依赖">1. 添加依赖</h3>
<p>在<code>pom.xml</code>文件中添加Spring Data MongoDB的依赖。如果你使用的是Spring Boot 3.x,依赖如下:</p>
<pre><code class="language-xml">&lt;dependencies&gt;
    &lt;!-- Spring Boot Starter Data MongoDB --&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
      &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt;
    &lt;/dependency&gt;
&lt;/dependencies&gt;
</code></pre>
<p>如果你使用的是Spring Boot 2.x,依赖类似,但版本号会有所不同。</p>
<hr>
<h3 id="2-配置mongodb连接">2. 配置MongoDB连接</h3>
<p>在<code>application.properties</code>或<code>application.yml</code>文件中配置MongoDB的连接信息。以下是常见的配置项:</p>
<h4 id="applicationproperties">application.properties</h4>
<pre><code class="language-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
</code></pre>
<h4 id="applicationyml">application.yml</h4>
<p>yaml复制</p>
<pre><code class="language-yaml">spring:
data:
    mongodb:
      uri: mongodb://username:password@host:port/database
      database: your_database_name
      host: 127.0.0.1
      port: 27017
</code></pre>
<p>如果MongoDB没有用户名和密码,可以省略<code>username</code>和<code>password</code>部分。</p>
<hr>
<h3 id="3-创建mongodb实体类">3. 创建MongoDB实体类</h3>
<p>创建一个实体类,用<code>@Document</code>注解标注,表示这是一个MongoDB的集合(Collection)。</p>
<pre><code class="language-java">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;
    }
}
</code></pre>
<hr>
<h3 id="4-创建mongodb操作接口">4. 创建MongoDB操作接口</h3>
<p>Spring Data MongoDB提供了<code>MongoRepository</code>接口,可以自动生成CRUD操作的方法。</p>
<pre><code class="language-java">import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository&lt;User, String&gt; {
    // 自定义查询方法
    List&lt;User&gt; findByName(String name);
}
</code></pre>
<p>通过继承<code>MongoRepository</code>,你可以直接使用以下方法:</p>
<ul>
<li>
<p><code>save()</code>:保存或更新文档</p>
</li>
<li>
<p><code>findById()</code>:根据ID查询文档</p>
</li>
<li>
<p><code>findAll()</code>:查询所有文档</p>
</li>
<li>
<p><code>deleteById()</code>:根据ID删除文档</p>
</li>
</ul>
<hr>
<h3 id="5-使用mongodb操作">5. 使用MongoDB操作</h3>
<p>在Service层或Controller层中注入<code>UserRepository</code>,并使用它来操作MongoDB。</p>
<pre><code class="language-java">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&lt;User&gt; getAllUsers() {
      return userRepository.findAll();
    }

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

    public List&lt;User&gt; getUsersByName(String name) {
      return userRepository.findByName(name);
    }

    public void deleteUserById(String id) {
      userRepository.deleteById(id);
    }
}
</code></pre>
<hr>
<h3 id="6-测试">6. 测试</h3>
<p>启动Spring Boot应用后,你可以通过Controller层调用<code>UserService</code>的方法来测试MongoDB的CRUD操作。</p>
<pre><code class="language-java">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&lt;User&gt; getAllUsers() {
      return userService.getAllUsers();
    }

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

    @GetMapping("/name/{name}")
    public List&lt;User&gt; getUsersByName(@PathVariable String name) {
      return userService.getUsersByName(name);
    }

    @DeleteMapping("/{id}")
    public void deleteUserById(@PathVariable String id) {
      userService.deleteUserById(id);
    }
}
</code></pre>
<hr>
<h3 id="7-注意事项">7. 注意事项</h3>
<ol>
<li>
<p><strong>MongoDB版本兼容性</strong>:确保MongoDB的版本与Spring Data MongoDB的版本兼容。</p>
</li>
<li>
<p><strong>索引优化</strong>:如果需要高性能查询,可以在实体类中使用<code>@Indexed</code>注解为字段添加索引。</p>
</li>
<li>
<p><strong>事务支持</strong>:MongoDB从4.0开始支持事务,Spring Data MongoDB也支持事务管理,但需要配置事务管理器。</p>
</li>
</ol><br><br>
来源:https://www.cnblogs.com/java-note/p/18723841
頁: [1]
查看完整版本: Spring Boot集成Spring Data MongoDB实现MongoDB操作