创建Spring Data MongoDB 依赖的 Spring Boot 项目
在 IntelliJ IDEA 中新建一个包含 Spring Data MongoDB 依赖的 Spring Boot 项目最直接的方式是使用其内置的 Spring Initializr 项目向导。以下是具体步骤步骤一创建新项目打开新建项目向导启动 IntelliJ IDEA。如果看到欢迎屏幕点击 “新建项目”如果已经在一个项目中则通过顶部菜单选择 “文件” - “新建” - “项目”。选择项目生成器在弹出的“新建项目”对话框中从左侧的“生成器”列表中选择 “Spring Boot”。步骤二配置项目基本信息在向导的下一步中配置项目的核心信息名称为你的项目起一个名字例如 mongodb-demo。语言选择 Java。类型选择 Maven这是最主流的方式。JDK选择你已安装的 JDK版本 17 或以上这是 Spring Boot 3.x 的基础要求。如果没有可以点击“下载 JDK”。其他选项如“组”、“工件”、“包名”可以使用默认值或按需修改。步骤三添加 Spring Data MongoDB 依赖这是最关键的一步。点击 “下一步”进入依赖选择界面。在依赖搜索框中输入 Spring Data MongoDB。在搜索结果中勾选 Spring Data MongoDB 依赖。可选如果你的项目需要提供 Web API建议同时搜索并勾选 Spring Web 依赖。步骤四生成并打开项目完成依赖选择后点击 “创建” 按钮。IntelliJ IDEA 将自动连接到 Spring Initializr 服务生成项目结构并下载所有依赖。这可能需要一点时间。验证与后续配置项目创建成功后可以进行以下验证和配置1.检查pom.xml文件打开项目根目录下的pom.xml文件你应该能在dependencies标签中看到自动添加的spring-boot-starter-data-mongodb依赖。dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-mongodb/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-webmvc/artifactId /dependency2.配置 MongoDB 连接在src/main/resources目录下的application.properties或application.yml文件中配置你的 MongoDB 连接信息。application.properties示例spring.application.namecdms spring.mongodb.urimongodb://192.168.0.51:27017/cdmsdbspring.application.namecdms spring.mongodb.urimongodb://{用户名}:{密码}192.168.0.51:27017/cdmsdb?authSourcecdmsdb #生产环境需设置登录用户名、密码数据库名称配置 mongodb 数据库连接及验证。3、操作创建集合package com.mongodb.cdms; import com.mongodb.client.MongoCollection; import org.bson.Document; import org.junit.jupiter.api.Test; // 导入这个注解 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.boot.test.context.SpringBootTest; public class mongotemplate extends CdmsApplicationTests { Autowired private MongoTemplate mongoTemplate; Test // 添加这个注解 public void createCollectionTest() { if (!mongoTemplate.collectionExists(user_test)) { mongoTemplate.createCollection(user_test); System.out.println(集合创建成功); } Document doc new Document(username, test) .append(age, 20); MongoCollectionDocument collection mongoTemplate.getCollection(user_test); collection.insertOne(doc); } }右键 Run 这个程序4、CRUD操作package com.mongodb.cdms; import com.mongodb.cdms.entity.CustInfo; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import java.util.List; import static org.springframework.data.mongodb.core.query.Criteria.where; SpringBootTest public class CustInfoCrudTest { Autowired private MongoTemplate mongoTemplate; // 1. 插入Create Test public void insertTest() { CustInfo cust new CustInfo(C1001, 李磊, M, 13800001111, 北京市朝阳区1号); CustInfo saved mongoTemplate.insert(cust, CUST_INFO2); // 指定集合名 System.out.println(插入成功ID: saved.getId()); } // 批量插入如需 Test public void insertBatchTest() { // 略参考之前的批量插入示例 } // 2. 查询Read // 2.1 查询所有 Test public void findAllTest() { ListCustInfo list mongoTemplate.findAll(CustInfo.class, CUST_INFO2); System.out.println(共 list.size() 条记录); list.forEach(System.out::println); } // 2.2 等值查询根据 CUST_ID Test public void findByCustIdTest() { Query query Query.query(Criteria.where(CUST_ID).is(C1001)); CustInfo cust mongoTemplate.findOne(query, CustInfo.class, CUST_INFO2); System.out.println(查询结果 cust); } // 2.3 多个条件组合gender phone_num Test public void findByGenderAndPhoneTest() { Query query Query.query( Criteria.where(gender).is(M) .and(phone_num).regex(^138) // 电话以138开头模糊查询 ); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); System.out.println(符合条件男且138开头的记录数 list.size()); list.forEach(System.out::println); } // 2.4 条件address 包含“北京”正则模糊查询 Test public void findByAddressLikeTest() { Query query Query.query(Criteria.where(address).regex(.*北京.*)); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); System.out.println(地址包含“北京”的记录数 list.size()); } // 2.5 条件CUST_NAME 以“张”开头前缀匹配 Test public void findByNamePrefixTest() { Query query Query.query(Criteria.where(CUST_NAME).regex(^张)); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); System.out.println(姓张的客户数 list.size()); } // 2.6 分页查询示例第1页每页10条按CUST_ID升序 Test public void findPageTest() { int page 1; // 页码从1开始 int size 10; Query query new Query(); query.skip((page - 1) * size).limit(size); query.with(org.springframework.data.domain.Sort.by(CUST_ID).ascending()); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); list.forEach(System.out::println); } // 3. 更新Update // 3.1 更新单个字段根据 CUST_ID 修改地址 Test public void updateAddressTest() { Query query Query.query(Criteria.where(CUST_ID).is(C1001)); Update update new Update().set(address, 上海市浦东新区2号); // 更新第一个匹配的文档 mongoTemplate.updateFirst(query, update, CustInfo.class, CUST_INFO2); System.out.println(更新完成); } // 3.2 批量更新将 gender 为 F 的电话号码前缀改为 150演示 Test public void updateBatchTest() { Query query Query.query(Criteria.where(gender).is(F)); Update update new Update().set(phone_num, 150 00000000); // 简单示例实际需拼接 // 更新所有匹配的文档 mongoTemplate.updateMulti(query, update, CustInfo.class, CUST_INFO2); System.out.println(批量更新完成); } // 3.3 使用 upsert如果不存在则插入 Test public void upsertTest() { Query query Query.query(Criteria.where(CUST_ID).is(C9999)); Update update new Update() .set(CUST_NAME, 王五) .set(gender, M) .set(phone_num, 13999999999) .set(address, 成都市武侯区); mongoTemplate.upsert(query, update, CustInfo.class, CUST_INFO2); System.out.println(upsert 执行完成若不存在则插入); } // 4. 删除Delete // 4.1 删除符合条件的第一个文档 Test public void deleteFirstTest() { Query query Query.query(Criteria.where(phone_num).is(13800001111)); mongoTemplate.remove(query, CustInfo.class, CUST_INFO2); System.out.println(删除成功第一个匹配的文档); } // 4.2 删除所有符合条件的数据例如删除 CUST_ID 以 C9 开头的 Test public void deleteAllByConditionTest() { Query query Query.query(Criteria.where(CUST_ID).regex(^C9)); mongoTemplate.remove(query, CustInfo.class, CUST_INFO2); System.out.println(删除所有 CUST_ID 以 C9 开头的记录); } // 4.3 删除整个集合慎用 Test public void dropCollectionTest() { mongoTemplate.dropCollection(CUST_INFO2); System.out.println(集合 CUST_INFO2 已被删除); } }