MongoDB - 整合 SpringBoot 操作全流程
发布日期:2025-04-14 14:10:19 浏览次数:8 分类:精选文章

本文共 2436 字,大约阅读时间需要 8 分钟。

MongoDB 与 SpringBoot 整合实践指南

1. 引入依赖

在项目中引入必要的依赖项,确保与 MongoDB 进行通信。通过 Maven 的方式添加 Spring Boot 数据 MongoDB Starter:

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

2. 配置文件

配置 application.properties 文件,设置 MongoDB 的基本信息,包括 URI、命名策略等。注意:MongoDB URI 格式为 mongodb://ip:port/database

spring.data.mongodb.uri=mongodb://192.168.73.3:27017/demo
spring.data.mapping.fieldNamingStrategy=org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy

3. 集合操作

3.1 创建集合

检查集合是否存在,如果不存在则创建:

if (!mongoTemplate.collectionExists("demo")) {
mongoTemplate.createCollection("demo");
}

3.2 删除集合

删除指定集合:

mongoTemplate.dropCollection("demo1");

4. 注解说明

在 MongoDB 中,通过注解对应字段进行映射和操作。

4.1 @Document

用于将 POJO 映射为 MongoDB 文档,指定集合名称:

@Document("demo")
public class User {
// ...
}

4.2 @Id

将字段映射为 MongoDB 的 _id

@Id
private Integer id;

4.3 @Field

指定字段在 MongoDB 中的命名:

@Field("work_day")
private Date workDay;

4.4 @Transient

标记字段不参与序列化:

@Transient
private String transientField;

5. 文档操作

5.1 查询

// 查询所有文档
List
users = mongoTemplate.findAll(User.class);
// 根据 ID 查询单个文档
User userById = mongoTemplate.findById(1, User.class);
// 根据条件查询
List
usersByCondition = mongoTemplate.find(
Query.query(Criteria.where("name").is("周杰伦"))
, User.class);

5.2 分页与排序

// 分页查询
public List
findPaginated(int page, int size) {
Query query = new Query();
query.skip((page - 1) * size).limit(size);
return mongoTemplate.find(query, User.class);
}

5.3 更新

// 更新单条记录
mongoTemplate.updateFirst(
Query.query(Criteria.where("name").is("周杰伦"))
, new Update().set("age", 20)
, User.class
);
// 更新多条记录
mongoTemplate.updateMulti(
Query.query(Criteria.where("name").is("周杰伦"))
, new Update().set("age", 20)
, User.class
);

5.4 删除

// 删除所有文档
mongoTemplate.remove(new Query(), User.class);
// 删除按条件
mongoTemplate.remove(
Query.query(Criteria.where("name").is("林俊杰"))
, User.class
);

6. 事务

6.1 配置

在应用配置类中启用事务管理:

@Configuration
public class MongoTransactionConfig {
@Bean
public MongoTransactionManager transactionManager(
MongoDatabaseFactory factory
) {
return new MongoTransactionManager(factory);
}
}

6.2 使用事务

在需要事务的业务逻辑中使用 @Transactional 注解:

@Transactional
public void handler(RegDto dto) {
// 业务逻辑
userIdentRepo.save(dto);
throw new RuntimeException("业务处理错误");
}

7. 注意事项

  • MongoDB 对类型严格要求,确保查询时类型匹配。
  • 默认情况下 MongoDB 不建议设置密码,建议使用更安全的方式管理访问权限。
上一篇:MongoDB - 索引底层原理和使用,聚合的使用(案例 + 演示)
下一篇:MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月12日 13时23分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章