文档章节

Titan Framework MongoDB深入理解3

 云季科技
发布于 2018/10/22 15:33
字数 1135
阅读 5
收藏 0

在前两篇文章中,我们介绍了操作Mongo数据库的类型Curd和Finder,下面要理解的是框架内mongoDB操作的条件类型——MongoDBQueryCondition。

MongoDBQueryCondition是一个接口,规定了一些实现类需求方法,这个类有唯一的实现类MongoDBQueryConditionImpl,在实现类中,包含几个关键属性,分别是:

  1. String tableName
  2. Object condition
  3. Document conditionBson
  4. Int pageSize
  5. Int currentPage
  6. Document orderBy
  7. Class<?> clazz

tableName用于存放指定条件的表名,condition是一个用于实现类的内部类使用的属性,conditionBson用于存放用于内部类使用的Mongo节点类型,pageSize和currentPage大家应该不陌生,这两个属性用于存放分页查询的条件,orderBy用于存放排序的条件,clazz是一个用于内部类使用的类类型属性。在该实现类中,给出了pageSize,currentPage,tableName,clazz,condition,orderBy这些属性的get方法,用户可以通过get方法查询到当前查询条件对象的各个属性的状态。

下面讲解该类最重要的内部类成分,在这之前还有一点需要提一下的是,MongoDBQueryCondition接口中有一个静态方法Condition,该方法参数为一个函数,用户可以使用lambda轻松编写查询条件,该方法中创建了接口实现类的内部类Buidler,通过链式调用Builder内部的方法来添加,方法本身并不返回builder对象,因为内部通过java8的Consumer类的accept()忽略了进行传入参数函数并执行函数后获得的返回值,框架为该方法指定返回一个MongoDBQueryCondition对象。

内部类在上边已经提过,叫做Builder,在类中,它创建了一个它的外部类MongoDBQueryConditionImpl实例,内部有一个方法getCondition()会将该实例返回,上文说的MongoDBQueryCondition对象就是通过该方法获得。

类中的Table方法参数为Object对象,它将该对象的类名作为表名,并且用过该对象的类构造器获取该类的类类型作为类型属性,以确定条件中表的属性参数,它有一个重载方法,传递两个参数,分别是String类型的表名字和Class类类型,用户可以通过该重载方法添加不同于类名的表名的查询条件(如类名为A,但数据库表名为B)。

Page方法参数为两个int类型的参数,第一个参数表示当前页数,第二个参数表示取出数目,需要注意的是框架的分页已经实现完毕,不需要进行其他的计算,如果需要取出第3页数据,每页展示10条数据,那么参数应该传为(3,10),而不是(20,10)。

Condition方法参数为一个泛型类型,在使用TitanFrameWork之前,您的数据结构也许使用了DBObject而非Document的形式进行存储,Titan内部没有提供该形式的存储方式,但提供了读取该形式数据的方法,若在调用该方法之前没有调用Table方法,默认会使用该类名作为表名条件,查询表中符合条件的DBObject对象。

Condition有一个重载方法,传递两个参数,一个是String类型的key,表示查询条件key关键字,一个是Object类型的value,表示查询条件的value关键字,这个重载方法和上面的方法不同的地方在于这里使用了Document的形式读取数据,并且没有默认的表名称判断,需要用户显式调用Table指定查询的表名,框架会根据条件去查找表中符合"key":"value"的数据集合。如果value的类型为java.util.List,那么会判断为用户需要查询一键多值的情况,类似于$in查询条件。用户可以使用多个Condition来完成最终的符合条件查询。

OrderBy是一个排序方法,有两个参数类型,传递key和value,这里不再判断任何条件,用户可以根据业务需求和上面的方法组合成复杂的嵌套排序筛选出最终结果。

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 14
码字总数 25736
作品 0
海淀
私信 提问
PHP与MongoDB:类库、框架与工具介绍

本文来自MongoDB官方,文中把PHP与MongoDB相关的类库、框架、工具做了汇总和介绍,如果你正使用PHP并在关注MongoDB,那么这篇文章可能对你有用。 架构相关 CakePHP CakePHP是一个非常受欢迎的...

kisshua
2012/08/31
0
0
10gen 发布 MongoDB 监控系统 MMS

MongoDB如日中天,10gen也刚刚拿到了一笔2000万美元的融资,但是10gen在全球宣传MongoDB时,发现人们经常问到这样一个问题“What should I be monitoring in production?”(我应该怎么对Mon...

红薯
2011/09/29
2.9K
9
Titan Framework MongoDB深入理解1

在TitanFrameWork框架中,已经集成了MongoDB的各个功能,现在我们对框架内部的一些重要类进行分析与解读。 MongoDBConverter 在Titan框架中,比较重要的一个接口就是MongoDBConverter,它是作...

云季科技
2018/10/18
0
0
在Windows环境下MongoDB搭建和简单操作

一,安装mongoDB 1,解压mongodb-win32-i386-1.8.2至E:MyProgrammongodb-win32-i386-1.8.2(你可以按照自己的路径来,路径中最好不要有空格,要不然麻烦) 2,新建文件夹C:DATADB,这是mongoDB...

徐文瑞
2013/05/12
0
0
MapReduce初探之一~~基于Mongodb实现标签统计

MapReduce 是一种编程模型,是 Google 提出的一种软件架构,主要应用于分布式系统上。Google对其原始的定义是“ MapReduce is a framework for computing certain kinds of distributable pr...

zhiweiofli
2013/03/06
0
5

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部