范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

这可能是最全面的SpringDataMongoDB开发笔记

  MongoDB数据库,在最近使用越来越广泛,在这里和Java的开发者一起分享一下在Java中使用Mongodb的相关笔记。希望大家喜欢。关于MongoDB查询指令,请看我的上一篇文章。
  Spring Data MongoDB提供了一些方便的映射注释供我们使用,下面列出官方说明地址以供参考
  官方说明文档:https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#mapping-usageSpring Data MongoDB 支持的注解@Document   : 文档标识,将 java 类与 Collection 文档对应 @Id         : 文档的唯一标识,在 mongodb 中为 ObjectID,生成规则:时间戳+机器标识+进程ID+自增计数器(确保同一时间内ID不会冲突) @Field      : 属性注解 @Indexed    : 索引 @CompoundIndex  : 混合索引 @GeoSpatialIndexed  : 声明该字段为地理信息的索引 @Transient  : 映射忽略的字段 (即不会保存到 mongodb) @Query      :查询
  SpringDataMongoDB的配置server:   port: 9006 spring:   application:     name: tensquare‐spit #指定服务名   data:     mongodb:       host: localhost:40000       database: spitdb   redis:     host: 127.0.0.1依赖
  在使用 SpringDataMongoDB 之前,需要先声明对 SpringData 模块的依赖关系。
  既然 SpringData 存储库抽象中的中央接口是 Repository 。 该接口的子类 CrudRepository 实现了实体类的 CRUD 功能,如果需要的话,也可以通过继承该接口来拓展 :public interface CrudRepository   extends Repository {     S save(S entity);          Optional findById(ID primaryKey);     Iterable findAll();                   long count();                            void delete(T entity);                   boolean existsById(ID primaryKey);       // … more functionality omitted. }
  除了 CrudRepository 之外,还有 JpaRepository 和 MongoRepository。在 CrudRepository 中,有许多抽象方法添加了额外的方法来简化对实体的分页访问。
  1.简单的CRUD查询。
  定一个一个实体类。public class Spit implements Serializable {      @Id     private String _id;     private String content;     private Date publishtime;     private String userid;     private String nickname;     private Integer visits;     private Integer thumbup;     private Integer share;     private Integer comment;     private String state;     private String parentid; }
  对于简单的查询,我们只需要继承MongoRepository即可。
  Dao层public interface SpitDao extends MongoRepository {     public Page findByParentid(String parentid, Pageable pageable); }
  Service层@Service @Transactional public class SpitService {      @Autowired     private SpitDao spitDao;      @Autowired     private IdWorker idWorker;      @Autowired     private MongoTemplate mongoTemplate;      public List findAll(){         List list = mongoTemplate.findAll(Spit.class);          return spitDao.findAll();     }      public Spit findById(String id){         Spit s = spitDao.findById(id).get();         return spitDao.findById(id).get();     }      public void save(Spit spit){         spit.set_id(idWorker.nextId()+"");         spitDao.save(spit);     }  //分页查询 public Page findByParentid(String parentid,int page,int size){         Pageable pageable = PageRequest.of(page-1,size);          return spitDao.findByParentid(parentid,pageable);      } }复杂的查询:mongoTemplate
  由于查询相对于其他增删改的操作要复杂一些,所以在这里单独说一下查询。还看上面的例子就可以。
  首先我们先介绍一下几个和查询有关的类Query、Criteria、Sort、PageRequest、PageImplQuery
  查询对象定义一个查询的所有要素,其中包括筛选条件、排序、起始行、返回条数等内容query(CriteriaDefinition criteriaDefinition):  静态方法通过注入一个CriteriaDefinition条件对象获得Query查询对象。在简单查询时使用此方法将非常的方便。
  例如:mongoTemplate.find(Query.query(Criteria.where("parameter3").lt(new Date()) addCriteria(CriteriaDefinition criteriaDefinition) : 添加一个CriteriaDefinition查询条件类到本次查询  skip(long skip) : 跳过文档的数量,可以与limit配合使用实现分页效果 limit(int limit)  : 查询返回的文档数量。  with(Sort sort) :  添加一个Sort排序对象 with(Pageable pageable): 添加一个Pageable分页对象。Pageable可以注入一个Sort,所以分页和排序可以一起添加。
  例如:Pageable pageable = new PageRequest(1,3,sort);  Criteria
  查询条件类,使用此类定义查询时的查询条件相当于SQL的where。
  Sort
  查询排序类,使用此类可以创建查询排序。
  public void thumbup(String spitId) {          Query query = new Query();         query.addCriteria(Criteria.where("_id").is("1"));         Update update = new Update();         update.inc("thumbup",1);         mongoTemplate.updateFirst(query,update,"spit");     }      public void add(Spit spit){         spit.set_id(idWorker.nextId()+"");         spit.setPublishtime(new Date());         spit.setVisits(0);         spit.setShare(0);         spit.setThumbup(0);         spit.setComment(0);         spit.setState("1");         if (spit.getParentid() != null&& "".equals(spit.getParentid())){             //如果存在上级ID,评论             Query query = new Query();             query.addCriteria(Criteria.where("_id").is(spit.getParentid()));             Update update = new Update();             update.inc("comment",1);             mongoTemplate.updateFirst(query,update,"spit");          }         spitDao.save(spit);       }
  通过以上的例子基本可以解决的Mongodb的复杂的查询了。关于Mongodb的多表联查。我将在下一篇文章来深入的探讨。

华为不配充电头为啥大家都原谅它至从iPhone12开始顶着环保的大旗开始不出充电器,陆陆续续有很多品牌更疯,但是都被骂得狗血淋头,我一直就好奇,为啥大家都不配,而不骂iPhone。难道真的是第一个吃螃蟹的人总是苹果iPhone12s13Pro系列新渲染图现在已经8月19号了,下半年到来了,大家最期待的发布会苹果秋季发布会即将来临,届时将推出新的旗舰手机系统,虽然还没有确定名字,不知道叫iPhone12S还是iPhone13,但该系圾皇菜圾互啄,买了肠子都悔青的手机1。Note207699的售价,1080p60Hz的屏幕,8256。好在三星想的比较周到,怕消费者7000块买个容易摔碎的手机,直接配置了耐摔的复合材料后盖!只要升级2000块,你魅族手机现在还值不值得购买来聊聊我的亲身感受,我有一台魅族16thPlus,用了没到一个月,其他魅族手机我没有用过所以不是很清楚。外形很一般可以说有点丑,大下巴大额头,外表比较光滑,手上出油出汗多的时候特别你们要的华为P50来啦华为P50Pro搭载海思麒麟90004G芯片与高通骁龙8884G芯片。其中,搭载骁龙8884G版本的机型9月开售。外观方面,华为P50Pro厚8。5mm,重约195g,采用3D柔性iQOO8Pro正式发布2021年8月17日晚间iQOO8系列发布了,iQOO8将于8月24日000正式开售,到时候能不能抢到就靠你单身多年的手速啦,全系都支持最高24期分期免息。我们来看看它的价格iQOiPhoneX和iPhoneXS在外表上怎么分辨你们或许知道iPhone7和iPhone8在外形上面怎么分辨,但是我相信你们分辨不了iPhoneX和iPhoneXS在外形上面有什么区别,提前知道的你懂的啦,不懂的也没关系,我来告小米11UItra大跳水小米11UItra大家都不陌生吧,重量234g。搭配高通骁龙888处理器,E4的屏幕材质,完美的6。81寸曲面屏,120Hz刷新率,真的香,前置2000万后置9600万,5倍的光学小米雷总要送3。7亿给首批米粉,你们领到了吗昨晚小米发布了MIX4和小米平板5,屏下摄像头加上骁龙888的MIX4售价4999起,会不会带起手机界屏下摄像头主流呢,你们觉得怎么样,很多人说就4999买了个屏下摄像头和试验品骁除了iphone什么手机最值得入手相信不少人最近都有遇到这个问题,我就遇上了,想把苹果换掉换安卓手机,但是对于我这个用了很多年的苹果手机的人来说,我怕影响我的使用感和习惯。这最近让我很纠结,有没有什么推荐的呢。在我住友制药与VR医疗服务商BehaVR合作恐鬼症梦魇将上线(VRPinea10月25日讯)今日重点新闻住友制药将向BehaVR投资2300万美元,用于开发商业化VR疗法微型投影仪开发商TriLite获800万欧元融资,本轮融资将用于推动其
朋友总是鼓吹苹果,无脑唱衰华为而且还不讲理,应该如何说服她?你应该告诉他,任正非,孟晚粥也用苹果。人家还无脑,就你这种智障还好意思说人家呢?就告诉你一个道理。而且是不容反驳的。在中华人民共和国大陆销售的一切品牌都是合情合理合法国家允许的产品亚马逊良心发现?来看看海外近期物流状亚马逊新举措让你用更少的钱存更多的货云商跨境了解到,近日亚马逊正在美国试验一项物流新举措,即在其运营中心上游新增一个仓储层,从上游仓库向运营中心供货,以实现更多的无缝补货。目前亚马三星现在几乎消失了,苹果会和他一样退出中国市场吗?三星是什么?苹果不是倒闭了?什么乱七八糟的问题。你真幽默呲牙这么无聊的问题让我怎么回答,你怎么知道三星手机消失了,我正用三星手机s10给你回问题!!为什么美国害怕华为,从而全力打压之前加入抖音小店无货源的商家现在如何?一年过去了,还能入场吗?可以肯定的是,抖音小店作为当下抖音电商体系里面最重要的载体,无论从流量机会还是运营模式上,无疑都是现阶段最适合普通人在抖音赚钱的项目。抖音巨大的流量红利,让抖音小店无货源模式门槛变花呗怎么大面积都被停用了,出什么事了吗?转移战场,天天网上骂人家,凭什么用人家花呗我有个朋友说,余额宝里存个50万,花呗不会停的看我的花呗借呗都停了,花呗用了好多年一直好好的,这个突然一下都给停了四万五还没变化刚看了还是币圈那些事俄罗斯中央银行俄罗斯中央银行正计划对数字卢布的交易收取费用金色财经报道,俄罗斯中央银行(CBR)监管机构金融技术部主任KirillPronin透露,俄罗斯中央银行正计划对数字卢布的对标Postman,高瓴资本加持,ApiPost如何引领APIfirst时代作者徐结怀宋荣荣编辑张康随着数字化浪潮快速席卷各行各业,以及研发前后端分离协作成为主流,架起前后端数据流通桥梁的API,呈现出爆发式增长的态势。为了让开发设计测试迭代协同更加高效,跌至6499元,100倍变焦12GB512GB,体验不输华为Mate40Pro了解行情的都知道,在同等配置的情况下,华为手机的售价往往要比其他国产手机品牌更高,但是你会发现,它们的销量并不差,哪怕就是没有5G功能的华为Mate40Pro和P50Pro,销量依黑五大促借双十一预热,跨境电商用什么吸引消费者?对于国内消费者而言,购物节愈发常态化。为吸引消费者,跨境电商也逐步本土化。双11刚结束,黑五购物节又即将开始,各大跨境电商平台包括亚马逊海外购抖音电商京东国际敦煌网天猫国际Newe耳机不知怎么选?青花瓷国潮风的它你可以来看一下耳机怎么选?这确实是一个大大的问题,现如今市面上的耳机种类品牌数不胜数,但是坑坑也很多,几十元的吧是不敢用,几千元的吧买不起,最怕的就是几百块钱买来的耳机还不够理想,小编也是经过踩谷歌Pixel6a渲染图惊艳亮相,Pixel5沦为白菜机创悲惨新纪录此前谷歌Pixel6系列已经正式上市,其靓丽的外观已经得到不少消费者的认可。现在91mobiles已经曝光了该系列手机中中高端Pixel6a的表现,展示了这款手机的外观设计。与此同