ValueList中主要的接口与实现类

http://valuelist.sourceforge.net/

1. ValueListInfo 封装Map对象,含有排序、分页、聚焦和提交表单等相关信息
2. ValueListHandler接口,实现类:DefaultValueListHandlerImpl 它是ValueList中的核心类,其定义在配置文件中,调用getValueList方法返回ValueList对象
3. ValueList接口,实现类:DefaultListBackedValueList 它包含两个对象,1)域对象的结果集,2)ValueListInfo对象
4. ValueListAdapter接口,有以下几种实现
 ○ DefaultWrapperAdapter         jdbc操作的适配器
 ○ EventLogAdapter               日志操作的适配器
 ○ FileSystemAdapter             文件系统操作的适配器
 ○ HibernateAdapter              hibernate操作的适配器
 ○ MappingSqlQueryAdapter        iBATIS的sqlMap适配器
 
具体实现流程

第一步:从请求中构造ValueListInfo对象,由帮助类ValueListRequestUtil实现
 从请求中取得URL的参数和系统默认值来构造ValueListInfo对象
 
第二步:得到Adapter的实现类
 调用getBean方法,从配置文件中取得ValueListHandler实现类,调用getValueList方法,得到实体key对应的Adapter,如:
 <bean class="net.mlw.vlh.adapter.hibernate3.HibernateAdapter">
  <property name="sessionFactory"><ref bean="mySessionFactory"/></property>
  <property name="defaultNumberPerPage"><value>10</value></property>
  <property name="defaultSortColumn"><value>messageIn.date</value></property>
  <property name="defaultSortDirection"><value>desc</value></property>
  <property name="hql">
  <value>
  from User AS vo
   /~certNumber: where vo.certNumber like {certNumber} ~/
   /~name: where vo.name like {name} ~/
   /~certHolder: where vo.certHolder like {certHolder} ~/
   /~groupName: where vo.group.name like {groupName} ~/
   /~sortColumn: ORDER BY vo.[sortColumn] [sortDirection]~/
  </value>
  </property>
  <property name="defaultFocusPropertyObjectAlias"><value>vo</value></property>
  <property name="maxRowsForFocus"><value>160000</value></property>  
  <property name="removeEmptyStrings"><value>true</value></property>
 </bean>
第三步:构造ValueList对象,使用DefaultListBackedValueList实现类
 用适配器取得结果集(如HibernateAdapter),封装ValueList对象
 ValueList中包含两个对象,1)域对象的结果集,2)ValueListInfo对象(分页的相关息)
 
第四步:把ValueList对象放到WEB的作用域中

HQL说明:主要通过迭代动态生成HQL语句
from User AS vo
 /~certNumber: where vo.certNumber like {certNumber} ~/           (1)
 /~name: where vo.name like {name} ~/                             (2)
 /~certHolder: where vo.certHolder like {certHolder} ~/           (3)
 /~groupName: where vo.group.name like {groupName} ~/             (4)
 /~sortColumn: ORDER BY vo.[sortColumn] [sortDirection]~/         (5)

(1)如果ValueListInfo中包含certNumber变量,如certNumber=100,则vo.certNumber like=100,生成HQL=from User AS vo where vo.certNumber like=100;
        如果ValueListInfo中不包含certNumber变量,生成HQL=from User AS vo   (1)行由空白代替
其它以此类推
注意:传给HQL的每个变量都要单独占一行,就算是类似between and 的语句也要分两行写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值