解决方案 »

  1.   

    得到前台数据,然后开始拼sql,对每个属性进行非空的判断  if(登录名 != null && "".equals(登录名)){
            sql.append(xxx like "登录名");
      }
      if(用户名 != null && "".equals(%用户名%)){
            sql.append(xxxx2 like "% xxx%");
    }
    //每个字段都判断一次
    //我这里只是简单的讲一下思路,还需要防sql注入,所以你需要使用预编译和占位符来进行。
    //那样的话,上面的思路需要稍加改动
      

  2.   

    我给你写个简单的:
    function query(){
    String sql = "select * from A where 1=1 ";
    if(fm.id.value!=''){
    sql += "and id="+fm.id.value;
    }
    if(fm.name.value!=''){
    sql += " and name="+fm.name.value;
    }
    ........执行sql;
    }
      

  3.   

    拼sql语句就可以实现
    Session session =hibernateTemplate.getSessionFactory().openSession();
    String aTypeid="";  //彩票类型
    String aSstrate=""; //执行状态
    String aSname="";   //策略名称
    if(typeid!=0){
    aTypeid=" and typeid="+typeid;
    }
    if(sstrate!=2){
    aSstrate=" and sstrate="+sstrate;
    }
    if(!text.equals("")){
    aSname=" and sname like '%"+text+"%'";
    }
    String sql="From Strategys where  userid="+userid+"  and stype="+stype+aTypeid+aSstrate+aSname+" order by sid desc";
    Query query = session.createQuery(sql);
    query.setFirstResult(start);  
    query.setMaxResults(end);  
    List<Bet> result = query.list();
    return result;
      

  4.   

    这样判断也许更好:
    if("".equals(text) || text==null){
        啥都不做;
    }else{
       拼接条件;
    }
      

  5.   

    StringBuffer hqlData = new StringBuffer();// 查询数据
    hqlData.append("select 字段  from  表名");
    hqlData.append(" where 1=1 ");
    if (StringUtils.isNotBlank(查询的字符串)) {
    hqlData.append(" and ");
    hqlData.append(“ 表中的字段=”+查询的字符串);
    }
      

  6.   

    StringBuffer hqlData = new StringBuffer();// 查询数据
    hqlData.append("select 字段  from  表名");
    hqlData.append(" where 1=1 ");
    if (StringUtils.isNotBlank(查询的字符串)) {
    hqlData.append(" and ");
    hqlData.append(“ 表中的字段=”+查询的字符串);
    }