网站大量收购独家精品文档,联系QQ:2885784924

MOQL--操作数(Operand).pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MOQL--操作数(Operand)

MOQL--操作数(Operand) Operand 是MOQL 语法结构的重要组成部分,语法结构中那些需要被分析处理 的数据列或数据值都被称之为Operand 。如select 后跟的数据列,where 条件中描 述的条件字段以及需要匹配的常数值等都被称之为Operand 。如下面语句中的红色 字体部分,均表示是一个Operand 。通过对其计算,我们可以获得数据结果,并形 成最终我们求解的数据结果集。 select count(a.id) cnt, sum(a.num) sum, a.num%500 mod from BeanA a group by 3 having mod 10 order by 1 在MOQL 中,Operand 不仅能在完整的语法结构中使用,还可以单独使用。MOQL 提供了方法可以直接创建一个操作数,并利用此操作数完成数据的求解。如下: EntityMap entityMap = new EntityMapImpl(); entityMap.putEntity(num, 12); entityMap.putEntity(num1, 3); entityMap.putEntity(num2, 4); try { Operand arithmetic = MoqlUtils.createOperand((num * num1) / num2 * 2.2 + 2 - 1); System.out .println(arithmetic.operate(entityMap)); } catch (MoqlException e) { e.printStackTrace(); } 该例中为表达式(num * num1) / num2 * 2.2 + 2 - 1创建了一个操作数,该操作数 利用传入的实体Map 对表达式进行了求解,并输出了执行结果,结果为20.8 。 MoqlUtils 的createOperand 方法可以创建一个操作数,传给该方法的参数为一个操 作数表达式字符串,返回的对象为一个Operand 接口,该接口位于org.moql 的包 路径下,定义如下: public interface Operand { /*获得操作数的类型*/ OperandType getOperandType(); /*返回操作数的名字*/ String getName(); /*返回操作数在文本串中的位置,返回对象类型为org.antlr.runtime.Token */ Object getSource(); /*根据给定的实体Map传入的值,计算操作数的值*/ Object operate(EntityMap entityMap); /*根据给定的实体Map传入的值,计算操作数的布尔值。*/ boolean booleanOperate(EntityMap entityMap); /*操作数的返回值是否为一固定常量。*/ boolean isConstantReturn(); /*重置操作数,将操作数状态置为初始状态。*/ void reset(); } getOperandType()方法用于返回Operand 的类型OperandType 。OperandType 为 枚举类型,也位于org.moql 的包路径下,定义格式如下: public enum OperandType { UNKNOWN, CONSTANT, VARIABLE, FUNCTION, EXPRESSION, COLUMNSELECTOR } 其包括的Operand 类型有常量(CONSTANT)、变量(VARIABLE)、函数(FUNCTION)、表 达式(EXPRESSION)及列筛选器(COLUMNSELECTOR)五类(注:Operand 的类型将在后面详细 介绍),当Operand 不属于以上任何一类时用UNKNOWN 未知表示。 getName()方法用于获得Operand 的名字。除了函数类型的Operand 的名字为 函数名外,其它类型的Operand 的名字就是生成Operand 的字符串本身。如: “sum(a.num)”整体被解析为一个函数Operand,其名字

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档