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"><dependencies>
<!-- Spring Boot Starter Data MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
</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<User, String> {
// 自定义查询方法
List<User> 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<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);
}
}
</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<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);
}
}
</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]