• 售前

  • 售后

热门帖子
入门百科

关于MongoTemplate通过id查询为null的问题

[复制链接]
阿豆学长长ov 显示全部楼层 发表于 2021-8-14 14:44:43 |阅读模式 打印 上一主题 下一主题
Mongo的优势


1. 它会把数据文件映射到内存中,如果是读操纵,内存中的数据起到缓存的作用,如果是写操纵,内存还可以把随机的写操纵转换成顺序的写操纵,总之可以大幅度提升性能。MongoDB并不干涉内存管理工作,而是把这些工作留给操纵系统的假造内存管理器行止理处罚,如许做的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大内存,荣幸的是假造内存管理器的存在让我们多数时间并不必要关心这个标题。

2. MongoDB的内存利用机制让它在缓存重建方面更有优势,简而言之:如果重启进程,那么缓存依然有效
设置:
  1. spring.data.mongodb.uri=mongodb://test:123456@${ipAddr}:27017/mrqc?connectTimeoutMS=10000&authSource=admin
复制代码
版本:
  1. <dependency>
  2. <groupId>org.springframework.data</groupId>
  3. <artifactId>spring-data-mongodb</artifactId>
  4. <version>2.2.0.RELEASE</version>
  5. </dependency>
复制代码
错误实体类

MongoId设置为了String,必要设置为ObjectId范例
  1. @Data
  2. @Document("user")
  3. public class User {
  4. @MongoId
  5. private String id;
  6. @Field("userName")
  7. private String userName;
  8. }
复制代码
精确实体类
  1. @Data
  2. @Document("user")
  3. public class User {
  4. @MongoId
  5. private ObjectId id;
  6. @Field("userName")
  7. private String userName;
  8. }
复制代码
查询语句,如果mongoId范例为String那么就查询不出来,无论是直接利用
findById方法或者find(query)或者id传ObjectId对象,都是查不出来的,开始还以为设置错了,效果是由于Mongo的id都是ObjectId无法对应上实体类中的String范例。改成ObjectId同样的语句就可以查询出来了
  1. User user = mongoTemplate.findById(new ObjectId(userId),User.class, "user");
复制代码
到此这篇关于关于MongoTemplate通过id查询为null的标题标文章就介绍到这了,更多相关MongoTemplate查询为null内容请搜索草根技能分享从前的文章或继续浏览下面的相关文章渴望各人以后多多支持草根技能分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作