MongoDB作为当今最流行的NoSQL数据库,很多公司用MongoDB来做大规模数据查询和离线分析。MongoDB具有传统数据的功能:二级索引、完善的查询系统、严格一致性等。它是专门为可扩展性、高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、复杂的多数据中心结构。
Spring Boot操作数据库的各种starters都继承于Spring Data,Spring Data是为了简化数据库操作而封装的一个组件包,提供了操作各种数据的支持。对于MongoDB, Spring Boot提供了spring-boot-starter-data-mongodb。Spring Boot操作MongoDB有两种较流行的使用方法,一种是将MongoTemplate注入到Dao中使用,一种是集成MongoRepository,MongoRepository内置了许多方法可以直接使用。
1.pom包配置
pom文件里添加spring-boot-starter-data-monogodb包引用:
2.添加properties
在项目的appliaction.properties中添加以下配置:
3.创建实体
定义一个实体类Student,具体如下:
4.使用MongoTemplate
4.1 定义CRUD操作
首先定义一个StudentRepository,定义了对Student对象的增、删、改、查的操作。代码如下:
然后定义一个StudentRepositoryImpl来实现StudentRepository,并且注入MongoTemplate来实现增删改查的操作。代码如下:
4.2 验证结果
在test中定义MongoDBTest类,来验证结果。
首先定义一个save的test方法,来验证新增对象是否有效。代码如下:
运行得结果如下:
通过可视化工具,我们可以看到成功插入一条数据。
然后再定义一个根据name查找的方法。代码如下:
输出结果如下:
上面结果说明,查找方法有效。
然后再定义一个update方法。代码如下:
执行上述方法,得到结果如下:
根据上面结果可以看到,存储的对象被更新了,说明update的方法也是有效的。
最后定义一个delete的方法。代码如下:
执行上述方法,通过工具我们发现Student不存在了,说明delete方法也生效了。
至此,我们验证了通过MongoTemplate我们可以实现对mongodb的增删改查操作。
5.使用MongoRepository
MongoRepository继承于PagingAndSortingRepository,使用方法和前面的Spring Data JPA基本一样,可以根据方法名自动生成SQL。
5.1 定义StudentRepository
为了和上面的Repository作区分,我们定义一个StudentRepository1来继承MongoRepository,这样我们就可以使用MongoRepository的内置方法。代码如下:
5.2 验证结果
接下来我们来定义Test方法验证上述方法是否有效。
首先,我们验证增加Student的方法。代码如下:
通过可视化工具,结果如下:
可以看到成功插入了一条Student数据,说明保存的方法生效了。
然后,我们来定义一个查找Student的方法。代码如下:
输出结果如下:
上述结果说明,查找的方法也是有效的。
然后,我们定义一个修改Student的方法。代码如下:
可视化结果如下:
说明update的方法也生效了。同时update和insert的方法相同,都是执行的save()操作。
最后,我们来测试delete数据的操作。代码如下:
通过可视化工具,发现student被成功删除。说明删除的方法也是有效的。
通过上面的验证,我们发现使用MongoRepository也能成功实现mongodb的CRUD操作。
6.总结
通过以上实践我们发现,通过两种方式都可以方便的操作MongoDB数据库。MongoRepository的使用方式相对简单,默认实现了很多简单的增删改查操作;复杂的CRUD可以通过自行封装MongoTemplate来实现。那么对于MongoDB的操作是不是很简单呢?那就赶紧来行动吧!
领取专属 10元无门槛券
私享最新 技术干货