当前位置: 代码迷 >> Java Web开发 >> 求一条sql话语 或hql 语句
  详细解决方案

求一条sql话语 或hql 语句

热度:4277   发布时间:2013-02-25 21:12:34.0
求一条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
text1text2······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+········;
  相关解决方案