"ADF学习总结(一)"
2013-04-19(Friday) 00:00
改变VO查询条件
- 使用WhereClause改变查询条件
- 使用Criteria改变查询条件
- 使用Bind Variables改变查询条件
使用WhereClause改变查询条件
- setWhereClause
通过VO对象的setWhereClause方法改变查询条件
{% codeblock lang:java %}
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
{% codeblock lang:java %}
DCIteratorBinding dc = ADFUtils.findIterator("DepartmentsView1Iterator");
ViewObject vo = dc.getViewObject();
ViewCriteriaManager vcm=vo.getViewCriteriaManager();
vo.applyViewCriteria(vcm.getViewCriteria("DepartmentsViewCriteria"));
vo.executeQuery();
- 动态创建ViewCriteria
如果事先没有在VO中定义好ViewCriteria,也可以在MB代码中动态创建
{% codeblock lang:java %}
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();
使用Bind Variables改变查询条件
- 使用Bind Variables结合ViewCriteria
参照以上定义ViewCriteria时,使用Bind Variables。
- 使用Bind Variables结合SQL
在VO的SQL中使用Bind Variables;
{% codeblock lang:sql %} 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时,通过如下代码控制即可实现:
{% codeblock lang:java %}
DCIteratorBinding dc = ADFUtils.findIterator("DepartmentsView1Iterator");
ViewObject vo = dc.getViewObject();
ViewCriteria vc = vo.createViewCriteria();
vo.setNamedWhereClauseParam("varDeptId", 20);
vo.executeQuery();
以上几种方法均可实现改变VO查询条件进行动态查询,各有灵活度,目前没有比较三种方式带来的性能影响,可以根据个人习惯采用。
Category: ADF Tagged: ViewCriteria