ADF 三种改变VO查询条件方式

  • 1、使用WhereClause改变查询条件
  • 2、使用Criteria改变查询条件
  • 3、使用Bind Variables改变查询条件

1、使用WhereClause改变查询条件

setWhereClause

通过VO对象的setWhereClause方法改变查询条件

1
2
3
4
DCIteratorBinding dc = ADFUtils.findIterator("DepartmentsView1Iterator");
ViewObject vo = dc.getViewObject();
vo.setWhereClause(" 1=1 ");
vo.executeQuery();

    • addWhereClause

    addWhereClause是在原有whereClause基础上添加新的查询条件; 
    跟setWhereClause替换原有whereClaue不同;

    使用ViewCriteria改变查询条件

    • 使用定义好的ViewCriteria

    事先在创建VO的时候,定义好几种Criteria:DepartmentsViewCriteria 

    1
    2
    3
    4
    5
    
    DCIteratorBinding dc = ADFUtils.findIterator("DepartmentsView1Iterator");
    ViewObject vo = dc.getViewObject();
    ViewCriteriaManager vcm=vo.getViewCriteriaManager();
    vo.applyViewCriteria(vcm.getViewCriteria("DepartmentsViewCriteria"));
    vo.executeQuery();

  • 2、动态创建ViewCriteria

如果事先没有在VO中定义好ViewCriteria,也可以在MB代码中动态创建

1
2
3
4
5
6
7
8
9
DCIteratorBinding dc = ADFUtils.findIterator("DepartmentsView1Iterator");
ViewObject vo = dc.getViewObject();
ViewCriteria vc = vo.createViewCriteria();
ViewCriteriaRow vcr = vc.createViewCriteriaRow();
vcr.setConjunction(ViewCriteriaRow.VC_CONJ_AND);
vcr.setAttribute("DepartmentId", "20");
vc.add(vcr);
vo.applyViewCriteria(vc);
vo.executeQuery();

3、使用Bind Variables改变查询条件

  • 使用Bind Variables结合ViewCriteria

参照以上定义ViewCriteria时,使用Bind Variables。

  • 使用Bind Variables结合SQL

在VO的SQL中使用Bind Variables;

1
2
3
4
5
6
SELECT Departments.DEPARTMENT_ID,
       Departments.DEPARTMENT_NAME,
       Departments.MANAGER_ID,
       Departments.LOCATION_ID
FROM DEPARTMENTS Departments
WHERE Departments.DEPARTMENT_ID = :varDeptId

创建Bind Variables:varDeptId 

在查询VO时,通过如下代码控制即可实现:

1
2
3
4
5
DCIteratorBinding dc = ADFUtils.findIterator("DepartmentsView1Iterator");
ViewObject vo = dc.getViewObject();
ViewCriteria vc = vo.createViewCriteria();
vo.setNamedWhereClauseParam("varDeptId", 20);
vo.executeQuery();

以上几种方法均可实现改变VO查询条件进行动态查询,各有灵活度,目前没有比较三种方式带来的性能影响,可以根据个人习惯采用。(原文地址:http://dengdezhao.cn/blog/2013-04-19/adfxue-xi-zong-jie-%5B%3F%5D/


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值