ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

springboot整合mongodb MongoTemplate和MongoRepository的用法

2021-09-26 11:00:12  阅读:393  来源: 互联网

标签:MongoRepository springboot Repository mongodb 接口 MongoDB MongoTemplate Spring


Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在分布式、微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合MongoDB的两种方法:MongoRepository和MongoTemplate。

1.MongoRepository

以Spring Date为中心的方法,基于所有Spring数据项目中众所周知的访问模式,提供更加灵活和复杂的api操作。

1.使用Spring Data MongoDb Repository可以使你不用写相关的查询组合语句,它会内部为我们实现这样的一个类。

2.只要你按规定定义好接口名就可以免去你写查询组合语句。

3.要有主键值才可以用save(有就更新,没有就插入)。所以就算没有ID也增加这个字段是好的。(id要是String才会自动为你生面ID号(保存时可以没有值),int 要你自己做惟一处理和输入值)

4.DATE不能作为主键使用。

Repository 接口是 Spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法

public interface Repository<T, ID extends Serializable> { }
Spring Data可以让我们只定义接口,只要遵循 Spring Data的规范,就无需写实现类。
与继承 Repository 等价的一种方式,就是在持久层接口上使用 @RepositoryDefinition 注解,并为其指定 domainClass 和 idClass 属性,两种方式没有区别。

Repository 提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下:

Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类
CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法 
PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法 
MongoRepository: 继承 PagingAndSortingRepository,实现一组 mongodb规范相关的方法

自定义的 XxxxRepository 需要继承 MongoRepository,这样的 XxxxRepository 接口就具备了通用的数据访问控制层的能力(CURD的操作功能)。

/**
 * 使用过Spring Jpa的都清楚,Repository实际就是用于操作数据库的类。在非关系型数据库MongoDB的整合中,也是一样的。Spring会帮我们实现好对应接口的方法,
 * 开发人员连SQL都不用写,非常省心。代码如下:
 *
 * 注意MongoRepository后面接的泛型<User, String>第一个为实体类,第二个为主键ID。
 */
public interface ResourceCommentRepository extends MongoRepository<ResourceComment, String> {

}

缺陷:

MongoRepository的缺点是不够灵活,MongoTemplate可以用来补充,对mongodb本身熟悉的话,你会发现使用MongoTemplate更加游刃有余,它更加接近原生的mongodb命令。

2.MongoTemplate(跟Mybatis类似)

MongoTemplate 遵循Spring中的标准模板模式,并为底层持久性引擎提供准备就绪的基本API。如果开发者没有提供MongoTemplate,默认会注册一个MongoTemplate进入Spring容器,所以开发者可以直接使用MongoTemplate。
MongoTemplate是数据库和代码之间的接口,对数据库的操作都在它里面。
MongoTemplate核心操作类:Criteria和Query

Criteria类:封装所有的语句,以方法的形式查询。
Query类:将语句进行封装或者添加排序之类的操作。
.MongoTemplate实现了interface MongoOperations。
.MongoDB documents和domain classes之间的映射关系是通过实现了MongoConverter这个interface的类来实现的。

.MongoTemplate提供了非常多的操作MongoDB的方法。 它是线程安全的,可以在多线程的情况下使用。

.MongoTemplate实现了MongoOperations接口, 此接口定义了众多的操作方法如"find", "findAndModify", "findOne", "insert", "remove", "save", "update" and "updateMulti"等。
.MongoTemplate转换domain object为DBObject,缺省转换类为MongoMappingConverter,并提供了Query, Criteria, and Update等流式API。

标签:MongoRepository,springboot,Repository,mongodb,接口,MongoDB,MongoTemplate,Spring
来源: https://blog.csdn.net/u010797364/article/details/120484002

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有