SpringBoot 整合MongoDB
1. pom.xml Maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
2. application.yml 配置文件
spring: data: mongodb: host: 127.0.0.1 port: 27017 username: root password: 123456 # 认证库(验证用户名和密码) authentication-database: admin # 操作库 database: db
3. 配置类
package com.ruhuanxingyun.dcy.service.manage.config; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.MongoDatabaseFactory; import org.springframework.data.mongodb.core.convert.*; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; /** * @description: MongoDB 配置类 * @author: ruphie * @date: Create in 2021/4/11 14:06 * @company: ruhuanxingyun */ @Configuration public class MongoConfig { /** * 去掉_class字段 * * @param factory MongoDatabaseFactory * @param context MongoMappingContext * @param beanFactory BeanFactory * @return MappingMongoConverter */ @Bean public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory factory, MongoMappingContext context, BeanFactory beanFactory) { DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory); MappingMongoConverter mappingMongoConverter = new MappingMongoConverter(dbRefResolver, context); // 若选择CustomConversions类,需要注意继承类就一个才可以,否则启动报错,本项目还有redis,所以要用MongoCustomConversions类 mappingMongoConverter.setCustomConversions(beanFactory.getBean(MongoCustomConversions.class)); // 去掉数据库中的_class字段,_class字段旨在把document转换成Java对象时能够转换到具体的子类 mappingMongoConverter.setTypeMapper(new DefaultMongoTypeMapper(null)); return mappingMongoConverter; } }
4. 注解
A. @Document:把一个java类声明为mongodb文档,其中collection参数代表文档,如果未指明collection,默认是类名;
B. @Id:文档的唯一标识,在mongodb中为ObjectId,由时间戳+机器标识+进程ID+自增计数器构成;
C. @Transient:忽略该字段序列化到mongodb中;
D. @Indexed:声明该字段需要索引;
E. @CompoundIndex:复合索引的声明;
注意:实体映射是通过MappingMongoConverter类实现的。
5. 常见问题
A. 问题一:连接MongoDB认证异常;
原因:在admin库中创建的用户,需要去admin库认证,然后才能访问其他库;
解决方式:在application.yml配置文件中添加spring.data.mongodb.authentication-database=admin即可。
B. 问题二:新增一条记录时报InvalidDataAccessApiUsageException异常;
原因:MongoDB无法为实体自动生成java.lang.Long类型的ID,默认的集合主键_id是ObjectId类型;
解决方式:若使用数据库_id字段,就将类型改为string。
可参考:SpringBoot整合MongoDB;
分类:
SpringBoot
, MongoDB
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗