首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

利用java引文拼装HQL

2012-08-24 
利用java注解拼装HQL工作中我经常会遇到这样一个场景:一个可以进行检索的功能列表;查询前我们需要输入一些

利用java注解拼装HQL
工作中我经常会遇到这样一个场景:
   一个可以进行检索的功能列表;查询前我们需要输入一些检索数据,然后后台通过接收这些检索数据,进行Hql拼装,最后形成形如 select filed1,filed2 from table where a=b and c > d 这样的检索语句。

  如果检索数据少的话拼装起来不算麻烦,但一旦检索数据很多,代码看起来就会很乱;
  我找到一种相对来说比较优雅的方式,用注解的方式;
  这里给出使用的片段:这是一个用于封装所需检索数据的对象:
@Search(name="projectName",signType=SignType.EQ)
private String projectName;
        这个注解会形成这样的数据 and projectName = [value]
        [value]的数据来源于getProjectname();

@Search(name="companyCode",signType=SignType.LIKE)
private String companyCode;

@Search(name="comode",signType=SignType.LIKE)
private Date createDate;

  这样如果这个对象没有什么级联的查询的话,我们只需要调用这个查询模型的demo.getHql(查询对象全类名)就可以得到它的整个的Hql语句;
目前这个功能用到了5个类
  SearchModel:用户的检索对象通过继承它就可以使用getHql方法
  Search:检索对象字段上所需要的注解(如:@Search)
  SignType:一个枚举,所支持的符号类型(如:>,<,=)
  OrderType,OrderModel:用于排序

想要对该功能进行扩展的可以下载源码;

热点排行