博客
关于我
MongoDB - 整合 SpringBoot 操作全流程
阅读量:797 次
发布时间:2023-02-09

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

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 查询

// 查询所有文档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 配置

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

@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 不建议设置密码,建议使用更安全的方式管理访问权限。

转载地址:http://wcffk.baihongyu.com/

你可能感兴趣的文章
MSSQL注入入门讲解:保护你的数据库免受攻击
查看>>
MSSQL部分补丁的列表及下载地址(持续更新)
查看>>
MSTP多生成树协议(第二课)
查看>>
MSTP是什么?有哪些专有名词?
查看>>
myeclipse将怎么java编译器改成jdk1.7的版本
查看>>
Mstsc 远程桌面链接 And 网络映射
查看>>
Myeclipse常用快捷键
查看>>
MyEclipse更改项目名web发布名字不改问题
查看>>
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
mt-datetime-picker type="date" 时间格式 bug
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
Mtab书签导航程序 LinkStore/getIcon SQL注入漏洞复现
查看>>
myeclipse配置springmvc教程
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>
MySQL
查看>>