`
canonical
  • 浏览: 359258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[导入]Query:结构化查询

阅读更多
   CRUD(Create, Read,Update, Delete)操作中最难处理的是查询。因为查询总是多样化的,如果每个特定查询调用都编制一个对象方法,则维护量太大且扩展性很差。如果编制一个通用的 查询接口,一般的做法是直接以SQL文本作为参数,但这样就几乎丧失了封装的意义。这里的核心问题是Query本身是复杂的,我们应该将它对象化为一个 类,在程序中控制Query的结构,而一个文本对象与一个复杂的Java结构对象的差异就在于对于文本对象我们很难有什么假定,因而在程序中也很难编制通 用的程序对其进行处理,一般只能对它进行传递。实际上,文本中描述的结构存在于java程序之外!当然,我们可以利用Parser来重新发现这种结构,那 最容易使用的Parser就是xml parser了,所以我们应该将Query的结构建立在xml描述的基础上。
edu.thu.search.Query类直接体现了对主题域的通用查询条件。(对比我对数据仓库模型的描述)
class Query{
    List getFields();
 TreeNode getCondition();
}
查 询条件主要通过TreeNode进行显式建模,使得程序有可能对它进行进一步的处理。例如,在DataSource处理Query之前,权限配置模块可以 将附加约束直接追加到现有查询条件之后,实现对数据权限的行级控制。因为把Fields明确分离出来,我们也可以做到对权限的列级控制。
Query类的使用示例如下:
Query.begin().fields(TEST_FIELDS)
             .condition().eq(ID,"3")
   .end().resultType(IQueriable.TYPE_ROW_MAP)
   .findOne(dataSource).mapValue();
这里的调用接口的设计基本遵循与SQL类相同的风格,只是面向主题域而不是直接针对SQL语言的封装。
分享到:
评论

相关推荐

    react-visual-query-builder:一个用于React项目的简单查询构建器

    React查询生成器由于需要在React中内置更多自定义查询构建器工具,我开发了一个开源查询构建器,它将根据所需的输入类型输出结构化的JSON查询对象,该对象由规则,规则组和许多字段组件组成。入门要开始使用,只需将...

    计算机信息管理系统设计.doc

    SQL 的全称是Structured Query Language,即结构化查询语言。1986年ANSI采用SQL语言作为关系数据库系统的标准语言 ,后被国际化标准组织(ISO)采纳为国际标准。SQL语言使用方便、功能丰富、简洁易 学,是操作...

    Power BI视频教程

    到中级的动 态数据透视表的创建、数据透视表函数 GETPIVOTDATA 的使用、在数据透视表中执行计算项、 可视化透视表切片器等技能点,再到高级部分的使用 SQL 语句导入外部数据源创建透视表、使用 Microsoft Query创建...

    Lerx网站管理系统 v2.6.2.zip

    1.代码结构化梳理。 2.修复一些错误和需要改进的地方。 3.增加速度开关。如果你的服务器内存较大,请将配置文件 resourcesApplication_zh_CN.properties 中的lerx.data.query.mod 的值改为1 4.后台增加问答系统...

    数据库.txt

    SQL(Structured Query Language结构化查询语言)是一种数据库查询语言和程序设计语言,主要用于管理数据库中的数据,如存取数据、查询数据、更新数据等。 SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库...

    网管教程 从入门到精通软件篇.txt

    DSQ:Corel QUERY(查询)文件 DST:刺绣机图形文件 DSW:Microsoft Developer Studio工作区文件 DTA:World Bank(世界银行)的STARS数据文件 DTD:SGML文档类型定义(DTD)文件 DTED:地面高度数字数据(图形...

    招生管理数据库系统(sql)

    Query:查询,管理员进行信息的查询。 工作人员使用系统的协作图如图2-5所示。 图2-5工作人员操作协作图 三、类与接口 类图是系统设计核心的部分,明确基本的类以及相关的关系有助于我们进一步工作,这也是进入...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。  SQL语言主要包含5个部分  数据定义...

    数据库管理工具 SQLyog Ultimate 13.1.1.0 + x64 中文多语免费版.zip

    4、结构化的同步,可以设定任务计划,按照特定的时间进行同步作业,并对同步数据进行校验。 5、工作管理器、计划备份、以及通知服务等。 6、可视化查询编辑器 7、基于C++和MySQL API编程; 8、方便快捷的数据库同步...

    SQLyog Ultimate 12.4.1 Multilingual x86/x64

    2、方便快捷的数据库同步与数据库结构同步工具; 3、易 用的数据库、数据表备份与还原功能; 4、支持导入与导出XML、HTML、CSV等多种格式的数据; 5、直接运行批量 SQL 脚本文件,速度极快; 6. 智能SQL语句自动完成...

    Webyog SQLyog Enterprise v8.12 Incl.Keymaker-CORE

    著名的 Webyog 公司出品的一款简洁高效、功能强大的图形化 MySQL 数据库管理工具。使用 SQLyog 可以快速直观地让您从世界的任何角落通过网络来维护远端的 MySQL 数据库。 SQLyog 相比其它类似的 MySQL 数据库管理...

    SQLyog Ultimate v12.0.8.0 x64

    作为一款MYSQL数据库的管理工具软件,SQLyog主要用于使用GUI界面对MYSQL进行管理,包含MySQL Query Browser,phpMyAdmin和其他前后台管理以及MySQL Clients为一体。 SQLyog 相比其它类似的 MySQL 数据库管理工具其有...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    4.17.1 导入样式表 154 4.17.2 包含样式表 155 4.18 模板规则冲突的解决 156 4.19 [xsl:output]元素 157 4.19.1 指定输出文档的格式 158 4.19.2 输出xml声明 158 4.19.3 输出文档类型定义 159 4.19.4 输出...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    4.17.1 导入样式表 154 4.17.2 包含样式表 155 4.18 模板规则冲突的解决 156 4.19 [xsl:output]元素 157 4.19.1 指定输出文档的格式 158 4.19.2 输出xml声明 158 4.19.3 输出文档类型定义 159 4.19.4 输出...

    PLSQLDeveloper下载

     结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    4.17.1 导入样式表 154 4.17.2 包含样式表 155 4.18 模板规则冲突的解决 156 4.19 [xsl:output]元素 157 4.19.1 指定输出文档的格式 158 4.19.2 输出xml声明 158 4.19.3 输出文档类型定义 159 4.19.4 输出...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    4.17.1 导入样式表 154 4.17.2 包含样式表 155 4.18 模板规则冲突的解决 156 4.19 [xsl:output]元素 157 4.19.1 指定输出文档的格式 158 4.19.2 输出xml声明 158 4.19.3 输出文档类型定义 159 4.19.4 输出...

    sql2005全文检索.doc

    与关系数据查询、多维数据库查询和基于XML的XQuery、XPath不同,全文检索技术主要处理对象是基于超大 数据量的文本数据和结构化的二进制数据上类似LIKE的模糊查询。主要区别见下表。   表1:全文检索与关系数据库...

    dart-gradient-picker:渐变选择器小部件可让您通过操纵颜色过渡来定义渐变颜色

    将渐变选择器导入到您的项目中,如 pub. 实例化渐变小部件: var gradientPicker = new GradientPicker(gradient: color, width: 180); query("#gradient_picker").nodes.add(gradientPicker.elementBase); ...

Global site tag (gtag.js) - Google Analytics