利用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:用于排序

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

你可能感兴趣的:(HQL,search)