日期:2014-05-17  浏览次数:20667 次

求一条sql语句 或hql 语句
查询条件不定 ,比如 查询用户, 查询条件可能是 id,也可能是 用户名,有可能是 组织结构 等 不定变量,
请问这条sql 或者hql 语句怎么写 ?

------解决方案--------------------
如果页面端传递过来的不是文本框(input type="texr"),而是选择框(select option)的话,可以用如下的方法来写。

Java code

        StringBuffer sb = new StringBuffer("select * from tableName where 1>0");
        if(null!=id){
            sb.append(" and id='"+id+"'");
        }
        if(null!=name){
            sb.append(" and name='"+name+"'")
        }

------解决方案--------------------
在查询前构建查询的字符串,可以专门定义一个类。比如你有很多查询条件,假设是jsp页面,在jsp页面里面把要查询的类型(int String 默认),其它类型均转化为String类型进行传递;在自定义的类里面用if判断是否为空,如果不为空得到值用%like,如果为空要判断一下,是不查询这个条件,还是默认查询,这根据实际情况。而对于int之类的数值类型,可以用javascript在jsp设置默认值来处理不输入int值的情况。然后根据if条件构建一个字符串str,然后传入专门的查询方法里面,可以用1=1 + str 的方式。----这是基本的作法,希望对你有所帮助。
------解决方案--------------------
动态组织SQL语句
如果Id不为空,则sql语句中加上id的查询条件
如果用户名不为空,则sql语句中加用户名的查询条件
String sql = "select * from user "
StringBuilder sb = new StringBuilder(" where 1=1 ");
if (null != id) {
sb.append(" and id=查询的值");
}

if (null != 用户名) {
sb.append(" and 用户名=查询的值");
}
------解决方案--------------------
我的笨办法是:
假如传来的值如下:
Java code

text1
text2
······

String sql="select * from 表名   where  1=1  ";
String  s1="";
String  s2="";
········
if(text1!=null)
{
  s1="and  字段1='"+text1+"'";
}
if(text2!=null)
{
  s2="and  字段2='"+text2+"'";
}
·········
sql=sql+s1+s2+········;