DatabaseFilter学习笔记
时间:2011-01-21
首先建立数据库控件canton.jcx
这里主要用到该控件的getAllBCanton
/**
* @jc:sql command-type="grid"
* rowset-name="B_CANTONRowSet"
* max-rows="1000"
* statement="SELECT CANTON_ID,PLACENAME,ZIP,PRE_PHONE,REMARK,DELETED,CANTON_LEVEL,UPPER_CANTON_ID FROM HAPPYTREE.HT_B_CANTON {sql: filter.getWhereClause ()} {sql: filter.getOrderByClause ()}"
*/
public RowSet getAllBCanton(DatabaseFilter filter)
throws SQLException;
可以看见上面方法的参数是DatabaseFilter类型,我们的主要任务就是传递一个参数到该方法中,方法返回RowSet类型的数据
构建一个jpf页面流
在该页面流中有一个jsp页面负责输入查询的条件select.jsp
代码如下:
新建 Web 应用程序页
Canton_id:
有一个负责显示查询结果的页面grid.jsp
代码为:
select页面表单的action为select,这样在页面流中的方法select如下:
/**
* @jpf:action
* @jpf:forward name="success" path="grid.jsp"
*/
protected Forward select(DatabaseForm form)
{
sortFilterService = SortFilterService.getInstance(getRequest());
//实例化一个SortFilterService
DatabaseFilter filter = new DatabaseFilter();
//创建一个DatabaseFilter对象filter
List list = new ArrayList();//用于存储查询条件FilterTerm
DatabaseFilter.FilterTerm query = new DatabaseFilter.FilterTerm();
query.sColumnName = "canton_id";//查询的列为caton_id,canton_id数据库中的一个字段
query.op = DatabaseFilter.opGreater;//比较条件是大于
//这里还有大于、小于、不等于、为空、不为空等条件,根据情况具体设定
//query.value = "000000";//比较的值
query.value = form.getCanton_id();
list.add(query);//比较条件加入
DatabaseFilter.FilterTerm[] term = new DatabaseFilter.FilterTerm[list.size()];
//设定FilterTerm把比较的内容,即where后面的条件
for(int i=0;i term[i] = (DatabaseFilter.FilterTerm)list.get(i);//把条件加入terms
}
DatabaseFilter.SortTerm[] sterm = new DatabaseFilter.SortTerm[1];//设定排序字段
sterm[0] = new DatabaseFilter.SortTerm();
sterm[0].sColumnName = "placename";//排序字段
sterm[0].op = DatabaseFilter.opDesc;//降序排列
filter = new DatabaseFilter(term,sterm);//构造databasefilter
try{
allRows = myControl.getAllBCanton(filter);//执行查询语句,并付给allRows
}catch(Exception e){
e.printStackTrace();
}
return new Forward("success",new DatabaseForm());
}
至此就ok了,这里只是一个简单的例子,多条件查询只要往list内加入条件就行了. |