EMF学习笔记4——Query查询

EMF查询框架主要由 org.eclipse.emf.query 这个plugin提供,创建并执行一个EMF查询,大概分为如下几步:
1,创建查询数据源;
2,构造EObjectCondition查询条件;
3,使用EMF查询框架提供的SELECT对象和UPDATE对象编写查询和更新语句;
4,执行语句得到查询或更新结果;
5,对执行结果进行检测,确保执行过程中没有发生异常。

EMF提供了两套Query对象,SELECT和UPDATE,分别用于模型的查询操作和更新操作。
SELECT对象的类图关系如下:

SELET对象结构图

类似SQL语句的from和where从句,SELECT对象的构建需要FROM和WHERE两个对象,分别代表查询范围和查询约束条件(EObjectCondition)。
除了这两个对象之外,SELECT对象还可能包含下参数信息:
maximumResultSize:设置查询的最大返回值;
cancellable:查询是否可撤销,默认值为true;
progressMonitor:查询监听器。

构建EMF SELECT查询代码大致如下:

其中FROM对象的构造参数可以是单一的EObject对象,也可以是Collection集合,还可能是IEObjectSource对象实例。
较为复杂的是WHERE对象的构建,或者说是其构造参数EObjectCondition约束条件的构建。

EMF查询框架预定义很多查询条件类继承至EObjectCondition,然而熟练的使用这些类并不容易,
还有一种方法是通过OCL约束表达式构造 BooleanOCLCondition 对象,如果熟练OCL语法,用此种方式相对比较容易。
但也有不足,就是OCL的解析速度相对较慢。

构造参数中,还可以不指定约束的上下文(即第3个构造参数为null),这样任何EMF实体如果含有category属性都会在该实体类上执行
"self.category <> BookCategory::Mystery implies self.pages < 200"约束检测。

当查询条件比较多的时候,可以通过EMF的核心查询框架将多个查询条件进行组合:

UPDATE对象继承至SELECT对象,除此之外还是用了SET对象进行赋值操作:

UPDATE对象结构图

构建EMF UPDATE操作代码也与SELECT类似,只是要在构造参数中添加SET对象来为实体赋值:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值