
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/demospring.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
:
@Idprivate Integer id;
4.3 @Field
指定字段在 MongoDB 中的命名:
@Field("work_day")private Date workDay;
4.4 @Transient
标记字段不参与序列化:
@Transientprivate String transientField;
5. 文档操作
5.1 查询
// 查询所有文档Listusers = 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 ListfindPaginated(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 配置
在应用配置类中启用事务管理:
@Configurationpublic class MongoTransactionConfig { @Bean public MongoTransactionManager transactionManager( MongoDatabaseFactory factory ) { return new MongoTransactionManager(factory); }}
6.2 使用事务
在需要事务的业务逻辑中使用 @Transactional
注解:
@Transactionalpublic void handler(RegDto dto) { // 业务逻辑 userIdentRepo.save(dto); throw new RuntimeException("业务处理错误");}
7. 注意事项
- MongoDB 对类型严格要求,确保查询时类型匹配。
- 默认情况下 MongoDB 不建议设置密码,建议使用更安全的方式管理访问权限。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月12日 13时23分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MODBUS 线圈、输入线圈、输入寄存器、保持输出寄存器的存储规范标识与功能码
2025-04-14
Modbus中的线圈和寄存器(两种重要的数据类型)
2025-04-14
my19_mysql 多线程备份恢复工具mydumper
2025-04-14
My opinion on Python.
2025-04-14
models.__dict__[args.arch] 实例复现
2025-04-14
ModelScope魔搭社区新用户如何免费体验36小时GPU服务器
2025-04-14
ModeNotFoundError:没有名为(*)的模块
2025-04-14
modprobe
2025-04-14
ModStart 是一个基于 Laravel 模块化极速开发网站框架
2025-04-14
Modular RAG:向“平台”级演进
2025-04-14
module 'queue' has no attribute 'Queue'解决
2025-04-14
Module Federation在vue3中使用vue2的组件
2025-04-14
Module Zero之语言管理
2025-04-14