竹笋

首页 » 问答 » 环境 » SpringBoot集成MongoDB
TUhjnbcbe - 2023/4/27 19:48:00
刘*连出诊的医院 http://baijiahao.baidu.com/s?id=1707879889412123085&wfr=spider&for=pc

MongoDB在业务场景中的使用,归根要和相关的面向对象语言进行集成,然后由语言调用相应的驱动进行CRUD操作,最终完成整个业务逻辑。在Java语言中,当前最流行的框架莫非SpringBoot,下面重点介绍SringBoot集成MongoDB。

一、在IDEA环境中搭建SpringBoot框架

创建Maven项目,指定自己的GroupId、ArtifactId和Version

在pom.xml文件中引入相应的jar包:

!--指定SpringBoot的版本--parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.1/version/parentdependencies!--junit单元测试依赖--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope/dependency!--SpringBoot单元测试依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--SpringBootweb--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--SpringBootMongoDB--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId/dependency!--lombok支持--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependencies

即:通过maven的parent来对整个项目的版本进行全局指定,本文使用的SpringBoot版本是2.4.1,然后引入单元测试的Junit和spring-boot-starter-test以方便后续进行测试,这样就建立了最小依赖关系的SpringBoot整合MongoDB。

二、创建SpringBoot配置文件和启动类

SpringBoot的配置文件放在resources目录下面,文件名称为:application.yml,项目结构为:

其中SpringMongDB为启主类,内容为:

SpringBootApplicationpublicclassSpringMongoDB{publicstaticvoidmain(String[]args){SpringApplication.run(SpringMongoDB.class,args);}}

application.yml为项目的配置文件,内容为:

server:port:spring:data:mongodb:port:database:testhost:.0.0.1

三、创建测试实体类和操作MongoDB的Service类

本文档创建测试实体类:TOrder和MongodbService

其中TOrder实体类为:

DatapublicclassTOrder{privateStringorderNo;privateStringproductName;privateBigDecimalprice;privateString[]address;privateMapString,Stringextinfo;}

MongodbService接口为:

publicinterfaceMongodbServiceT{Tinsert(Tt,StringcollectionName);longdelete(Stringid,StringcollectionName);}

先对插入和删除这两个基本操作进行测试,后续复杂的操作不断介绍。

MongodbService的实现为:

ServicepublicclassMongodbServiceImplTimplementsMongodbServiceT{

AutowiredprivateMongoTemplatemongoTemplate;

OverridepublicTinsert(Tt,StringcollectionName){returnmongoTemplate.insert(t,collectionName);}

Overridepubliclongdelete(Stringid,StringcollectionName){Queryquery=newQuery();query.addCriteria(Criteria.where(_id).is(newObjectId(id)));DeleteResultdeleteResult=mongoTemplate.remove(query,collectionName);returndeleteResult.getDeletedCount();}}

其中,关键操作类为MongoTemplate,后续我们会对这个类进行重点介绍。

四、进行测试

创建测试类MongoDBTest

SpringBootTest

RunWith(SpringJUnit4ClassRunner.class)publicclassMongoDBTest{

AutowiredprivateMongodbServiceTOrdertOrderMongodbService;

TestpublicvoidinsertTest(){TOrdertOrder=newTOrder();tOrder.setOrderNo();tOrder.setPrice(newBigDecimal());tOrder.setAddress(newString[]{10,1,101});tOrder.setProductName(MongoDB从入门到精通);tOrderMongodbService.insert(tOrder,t_order);}}

执行insertTest后,在MongoShell中进行查看是否插入成功:

可以看到插入成功,文档中多了一个_class属性,这是MongoTemplate自动加上的,后续我们也可以通过配置删除掉这个属性。

TestpublicvoiddeleteTest(){Stringid=5fe2ffb5aef;tOrderMongodbService.delete(id,t_order);}

执行deleteTest后,在MongoShell中进行查看是否删除成功,执行:db.t_order.find().pretty()可以看到插入的文档已经被删除了。

五、总结

SpringBoot集成MongoDB需要在POM文件中引入:spring-boot-starter-data-mongodb然后在配置文件中指定数据库连接的host、port、db,如果有用户名和密码的话也需要进行设置。定义操作MongoDB的service接口,面向对象的主要思维就是接口化编程在Service类中注入mongoTeplate,调用mongoTeplate的方法对数据库进行CRUD操作。详细的SpringBoot操作MongoDB内容在后续的章节进行讲解,欢迎大家

1
查看完整版本: SpringBoot集成MongoDB