
MongoDB整合SpringBoot
小技巧:去掉
发布日期:2025-04-14 17:33:19
浏览次数:14
分类:精选文章
本文共 4483 字,大约阅读时间需要 14 分钟。
Spring Boot 整合 MongoDB 开发指南
环境准备
1. 引入依赖
在项目中添加 MongoDB 相关依赖:
org.springframework.boot spring-boot-starter-data-mongodb
2. 配置文件编写
在 application.properties
中添加以下配置:
server: port: 8088spring: application: name: mongdb-server data: mongodb: uri: mongodb://hushang:123456@192.168.75.100:27017/test?authSource=admin # URI 可转换为以下格式: # database: test # host: 192.168.75.100 # port: 27017 # username: hushang # password: 123456 # authentication-database: admin
连接配置请参考 MongoDB 官方文档。
测试
创建测试主类 LearnMongodbApplicationTest
,示例代码如下:
public class MongoTemplateTests extends LearnMongodbApplicationTest { @Autowired private MongoTemplate mongoTemplate; @Test public void testCollection() { boolean exists = mongoTemplate.collectionExists("emp"); if (exists) { mongoTemplate.dropCollection("emp"); } mongoTemplate.createCollection("emp"); }}
文档操作
相关注解
注解 | 描述 |
---|---|
@Document | 用于将类映射为 MongoDB 文档 |
@Id | 用于映射 MongoDB 的 _id 字段 |
@Field | 用于映射字段名称 |
@Transient | 用于忽略序列化字段 |
创建实体
实体类 Employee
示例:
@Data@Document("emp")@AllArgsConstructor@NoArgsConstructorpublic class Employee { @Id private Integer id; @Field("username") private String name; @Field private Integer age; @Field private Date createTime; @Transient private String script;}
插入文档
@Testpublic void testInsertDocument() { Employee user = new Employee(1, "hushang", 25, new Date(), "这是一个测试数据"); Employee userSave = mongoTemplate.save(user); // 或使用批量插入 ListemployeeList = new ArrayList<>(); employeeList.add(new Employee(2, "hushang", 25, new Date(), "")); employeeList.add(new Employee(3, "hushang", 25, new Date(), "")); employeeList.add(new Employee(4, "hushang", 25, new Date(), "")); mongoTemplate.insert(employeeList, Employee.class);}
查询文档
@Testpublic void testFind() { log.info("查询所有文档"); ListemployeeList = mongoTemplate.findAll(Employee.class); employeeList.forEach(System.out::println); log.info("查询单个文档"); Employee mongoTemplateById = mongoTemplate.findById(1, Employee.class); System.out.println(mongoTemplateById); log.info("findOne 查询"); Employee employeeByOne = mongoTemplate.findOne(new Query(), Employee.class); System.out.println(employeeByOne); log.info("条件查询"); Query query1 = new Query(Criteria.where("age").gt(18)); Query query2 = new Query(Criteria.where("age").gt(18).lt(28)); Query query3 = new Query(Criteria.where("name").regex("hu")); log.info("复杂查询"); Criteria criteria = new Criteria(); criteria.andOperator(Criteria.where("age").gt(18), Criteria.where("name").is("hushang")); Query query4 = new Query(criteria); List result = mongoTemplate.find(query4, Employee.class); System.out.println(result); log.info("排序查询"); Query query5 = new Query(); query5.with(Sort.by(Sort.Order.desc("age"))); log.info("分页查询"); Query query6 = new Query(); query6.with(Sort.by(Sort.Order.desc("age"))) .skip(1) .limit(2);}
更新文档
@Testpublic void testUpdate() { Query query = new Query(Criteria.where("username").is("hushang")); Listemployees = mongoTemplate.find(query, Employee.class); System.out.println("更新前:" + employees); Update update = new Update(); update.set("age", 18); // 更新所有匹配的记录 UpdateResult updateResult = mongoTemplate.updateMulti(query, update, Employee.class); System.out.println("更新结果:" + updateResult);}
删除文档
@Testpublic void testDelete() { // 删除所有文档 mongoTemplate.remove(new Query(), Employee.class); // 条件删除 Query query = new Query(Criteria.where("age").gte(45)); mongoTemplate.remove(query, Employee.class);}
小技巧:去掉 _class
属性
在 MongoConfig
中定义自定义映射:
@Configurationpublic class TulingMongoConfig { @Bean public MappingMongoConverter mappingMongoConverter( MongoDatabaseFactory mongoDatabaseFactory, MongoMappingContext context, MongoCustomConversions conversions) { DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDatabaseFactory); MappingMongoConverter mappingMongoConverter = new MappingMongoConverter(dbRefResolver, context); mappingMongoConverter.setCustomConversions(conversions); mappingMongoConverter.setTypeMapper(new DefaultMongoTypeMapper(null)); return mappingMongoConverter; }}
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年05月18日 19时38分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mongoDB教程(四):用户角色
2025-04-14
MongoDB数据库/集合/文档基本操作
2025-04-14
mongodb数据库操作--备份 还原 导出 导入
2025-04-14
mongodb数据库的基本操作
2025-04-14
MongoDB数据库详解:特点、架构与应用场景
2025-04-14
mongodb数据库运维常用语法
2025-04-14
MongoDB整理笔记の增加节点
2025-04-14
MongoDB整理笔记の索引
2025-04-14
MongoDB文档常见查询
2025-04-14
MongoDB无法远程连接
2025-04-14
MongoDB框架零基础入门
2025-04-14
mongoDb概述(翻译自官网)
2025-04-14
mongodb每天上亿数据量定期清理
2025-04-14
MongoDB的Decimal128类型转换成Java的BigDecimal类型错误
2025-04-14
mongodb的一些语句使用
2025-04-14
MongoDb的基本操作快速入门
2025-04-14
MongoDB的安装、启停和常用命令(五分钟入门)
2025-04-14
MongoDB系列—— Window 搭建Mongodb 集群
2025-04-14
MongoDB索引
2025-04-14