浅谈J-Hi查询过滤器的实现原理

发表于:2011-3-15 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张昊    来源:51Testing软件测试网采编

  与addFilter对应,J-Hi还提供了removeFilter的功能,目的是通过目标过滤器中删除曾经加进来的子过滤器

otherFilter.remove(filter);

  对字符串的操作,如果不加操作符那么系统默认采用like操作符,并且左右两侧均会加通配符,为了解决通配符的问题,J-Hi提供了

Filter likeFilter = FilterFactory.getLikeFilter("name""马超", Filter.RELATION_AND, LikeFilter. LIKE_CONTROLER_LEFT );

  对应的SQL语名为:name like ‘%马超’

  如果对null或非null做过滤

  • FilterFactory.getSimpleFilter(propertyName, null, Filter.OPERATOR_EQ);      
  • FilterFactory.getSimpleFilter(propertyName, null, Filter.OPERATOR_NOT_EQ);
  •   对应的SQL语句分别为:propertyName IS NULL ; propertyName IS NOT NULL

      如果做包含(IN)做过滤

    FilterFactory.getInFilter(propertyName, coll);

      其中coll是java.util.Collection接口的对象

      除此以外,J-Hi还提供了排序器

  • Sorter sorter = SorterFactory.getSimpleSort(propertyName, Sorter.ORDER_DESC);     
  • Sorter.addSort(properyName1, Sorter.ORDER_ASC);
  •   首先所有的排序器都必须由SorterFactory(过滤器工厂)创建,排序器可以通过addSort方法累加。也可以通过addSort方法将两个排序器连接合并在一起

      具体的调用方法例如:

  • HiUserManager userMgr = (HiUserManager)SpringContextHolder.getBean(HiUser.class);      
  • userMger.getObjects(filter,sorter);
  •   总结:J-Hi的查询过滤器并没有象Hibernate的Criteria那么的强大,还不支持外连接与聚合。原因是这种大数据量的统计对ORM框架来实现在效率上并不是好的解决方案,再者实现上述功能增加了使用者操作的复杂度。荐于以上两个原因J-Hi的查询过滤器没有实现上述功能。

    22/2<12
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号