云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

SpringBoot快速整合MongoDB实战指南(附完整代码)

jxf315 2025-03-20 15:48:24 教程文章 24 ℃

一、前言:

随着NoSQL数据库的广泛应用,MongoDB凭借其灵活的数据模型和高性能特性成为开发者的热门选择。本文将手把手教你如何在SpringBoot项目中集成MongoDB,实现基本的CRUD操作。

二、环境准备:

  • JDK 17+
  • SpringBoot 3.1.4
  • MongoDB 6.0+
  • IDEA开发工具
  • Postman测试工具

三、 项目搭建:

1. 创建SpringBoot项目

通过start.spring.io生成项目时勾选:

  • Spring Web
  • Spring Data MongoDB

2. 添加依赖



    org.springframework.boot
    spring-boot-starter-data-mongodb

3. 配置文件

application.yml配置:

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/testdb
      # 带密码连接示例
      # uri: mongodb://user:password@localhost:27017/testdb?authSource=admin

四、核心功能实现

1. 实体类映射

@Document(collection = "products")
public class Product {
    @Id
    private String id;
    private String name;
    private BigDecimal price;
    private LocalDateTime createTime;
    // 省略getter/setter
}

2. 自定义Repository

public interface ProductRepository extends MongoRepository {
    List findByNameLike(String name);
    
    @Query("{ 'price' : { $gt: ?0 } }")
    List findByPriceGreaterThan(BigDecimal price);
}

3. Service层实现

@Service
public class ProductService {
    @Autowired
    private ProductRepository repository;

    public Product createProduct(Product product) {
        product.setCreateTime(LocalDateTime.now());
        return repository.save(product);
    }
    
    // 其他CRUD方法...
}

4. Controller层

@RestController
@RequestMapping("/api/products")
public class ProductController {
    @Autowired
    private ProductService productService;

    @PostMapping
    public ResponseEntity create(@RequestBody Product product) {
        return ResponseEntity.ok(productService.createProduct(product));
    }
    
    // 其他端点...
}

五、进阶功能

1. 自定义MongoTemplate操作

@Autowired
private MongoTemplate mongoTemplate;

public List complexQuery() {
    Query query = new Query();
    query.addCriteria(Criteria.where("price").gt(100)
                          .and("name").regex("^A"));
    return mongoTemplate.find(query, Product.class);
}

2. 事务支持

@Transactional
public void batchInsert(List products) {
    repository.saveAll(products);
}

六、测试验证

  • 启动MongoDB服务
  • 运行SpringBoot应用
  • 使用Postman测试接口:
  • POST /api/products
  {
    "name": "MacBook Pro",
    "price": 15999.00
}

七、常见问题排查

  1. 连接失败检查:MongoDB服务是否启动防火墙是否开放27017端口用户权限是否正确
  2. 时区问题处理:
@Bean
public MongoCustomConversions customConversions() {
    List<Converter> converters = new ArrayList<>();
    converters.add(new DateToLocalDateTimeConverter());
    return new MongoCustomConversions(converters);
}

八、总结

本文完整演示了SpringBoot集成MongoDB的流程,涵盖基础CRUD操作、复杂查询和事务处理。MongoDB的灵活Schema特性非常适合需要快速迭代的项目,结合SpringData的封装能显著提升开发效率。

最近发表
标签列表