比如说有个检索,可能要检索A,B,C,D,E五个属性,那么在hql中拼接的语句就应该是
from table where A=? and b=? and C=? and D=? and E=?这样子,但是现实情况是比较复杂的,如果手动去拼接这个字符串比较复杂,什么时候加where就是个问题了,更何况有的属性查询有的不查询,求各位大神有什么现成的解决方案吗?或者我自己写代码的话是什么思路呢?
你们回答的都不对,我找到解决办法了,用criteria完美解决了,不用拼where也不用and,有什么条件就无限的往上加就行了,对于我这种比较复杂检索功能的页面正好用。
什么时候加where就是个问题了……
from table where 1=1 后面的全and xxx
自己判断属性需不需要查询,查就手动拼接加上,不查就不加
查属性?类似关键字那种吗 可以使用模糊查询啊
拿个简单的来说,比如mysql, where A like %example1% and B like %example2% 这样 example是你传入的字符串 如果你example传入"票价" B是""空字符串,
那么查询只会查 A属性 存在任何 跟"票价" 相关的
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;
}