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

来源:互联网 发布:小众品牌知乎 编辑:程序博客网 时间:2024/05/01 13:47
  • 1、使用WhereClause改变查询条件
  • 2、使用Criteria改变查询条件
  • 3、使用Bind Variables改变查询条件

1、使用WhereClause改变查询条件

setWhereClause

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

1234
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 

    12345
    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代码中动态创建

123456789
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;

123456
SELECT Departments.DEPARTMENT_ID,       Departments.DEPARTMENT_NAME,       Departments.MANAGER_ID,       Departments.LOCATION_IDFROM DEPARTMENTS DepartmentsWHERE Departments.DEPARTMENT_ID = :varDeptId

创建Bind Variables:varDeptId 

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

12345
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/


原创粉丝点击