ksdb0468473
杂烩饭阁下哦哦
2015-05-12 09:06
采纳率: 69.2%
浏览 7.1k
已采纳

hibernate的hql多个查询条件如何快捷的拼接

比如说有个检索,可能要检索A,B,C,D,E五个属性,那么在hql中拼接的语句就应该是
from table where A=? and b=? and C=? and D=? and E=?这样子,但是现实情况是比较复杂的,如果手动去拼接这个字符串比较复杂,什么时候加where就是个问题了,更何况有的属性查询有的不查询,求各位大神有什么现成的解决方案吗?或者我自己写代码的话是什么思路呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • ksdb0468473
    杂烩饭阁下哦哦 2015-05-15 11:08
    已采纳

    你们回答的都不对,我找到解决办法了,用criteria完美解决了,不用拼where也不用and,有什么条件就无限的往上加就行了,对于我这种比较复杂检索功能的页面正好用。

    点赞 评论
  • u011376884
    逝_去_的_光_阴 2015-05-12 09:35

    什么时候加where就是个问题了……
    from table where 1=1 后面的全and xxx
    自己判断属性需不需要查询,查就手动拼接加上,不查就不加

    点赞 评论
  • u012976524
    离子光刀 2015-05-13 06:08

    查属性?类似关键字那种吗 可以使用模糊查询啊
    拿个简单的来说,比如mysql, where A like %example1% and B like %example2% 这样 example是你传入的字符串 如果你example传入"票价" B是""空字符串,
    那么查询只会查 A属性 存在任何 跟"票价" 相关的

    点赞 评论
  • qq_25226029
    空-城旧-梦 2015-05-13 08:27

    public String getHql(String[] property,Object[] obj){
    String hql="from table ";

    String str="";
    if(obj.length>0){
    str="where ";
    for(int i=0;i<obj.length;i++){
    if(obj[i]!=null){
    str+=pro[i]+"="+obj[i]+" and "
    }
    }
    str=str.subString(0,str.length-4);
    }
    return hql+str;
    }

    点赞 评论

相关推荐