我在做一个租房网,但是多条件查询的时候很纠结  无从下手,没思路 ,各位大侠,帮帮忙!!!

解决方案 »

  1.   

    把搜索条件动态的放到action中的String[] conditions 这个数组里。
    在service层组装 HQL查询语句。包括时间。即可。
      

  2.   

    您说的是把所有的条件都放到这个数组里?  然后组装hql吗?  
      

  3.   

    为啥不给每个搜索框中加一个监听事件呢,输入一个自动查询,输入两个两个条件自动查询,这样做应该很easy吧
      

  4.   

    呃多条件查询就是sql或者hql的拼装
      

  5.   

    把参数放在map里面 然后在dao层拼接sql或者hql
      

  6.   

    写个方法public  String getSqlByProperties() {
    String sql = "select s from SalaryStandardDetails s where 1=1";
    if (!id.equals("")) {
    sql += " and s.id like '%" + id + "%' ";
    }
    if (!standardName.equals("")) {
    sql += " and s.standardName like '%" + standardName + "%' ";
    } if (!this.minTime.equals("") && !this.maxTime.equals("")) {
    sql += " and s.createTime between To_date('" + minTime
    + "','yyyy/MM/dd') and To_date('" + maxTime
    + "','yyyy/MM/dd')";
    } else if (!this.minTime.equals("") && this.maxTime.equals("")) {
    sql += " and s.createTime > To_date('" + minTime + "','yyyy/MM/dd') ";
    } else if (this.minTime.equals("") && !this.maxTime.equals("")) {
    sql += " and s.createTime < To_date('" + maxTime + "','yyyy/MM/dd') ";
    }
    return sql;
    }
      

  7.   

    跟单条件没什么区别啊
    无非就是多拼几个参数而已,
    只要sql能写出来就没有什么问题
      

  8.   

    LZ说的没思路是什么意思   数据库设计? 多表查询?  还是拼SQL? 系统结构设计?  你都给我整矛盾了。。  如果是单表查询条件多也没什么  自己构建一个方法  我自己写过的  仅供参考:/**
     * 查询出满足conditions中的条件的entityClass实体类集合 并且按照orders中的数据进行排序
     * 
     * @param entityClass
     *            要查询的实体类
     * @param conditions
     *            条件的集合 存储方式为 conditions.put("address","掌趣科技")
     * @param orders
     *            根据orders中的字段进行排序 存储方式为 orders.put("order","asc")
     * @return entityClass的集合
     */
    public <T> List<T> findAll(Class<T> entityClass,
    LinkedHashMap<String, Object> conditions,
    LinkedHashMap<String, String> orders) {
    DetachedCriteria detachedCriteria = DetachedCriteria
    .forClass(entityClass); Set<String> ordersKey = orders.keySet();
    for (String orderKey : ordersKey) {
    if (orders.get(orderKey).equals("asc")) {
    detachedCriteria.addOrder(Order.asc(orderKey));
    } else {
    detachedCriteria.addOrder(Order.desc(orderKey));
    }
    } Set<String> conditionsKey = conditions.keySet();
    for (String conditionKey : conditionsKey) {
    detachedCriteria.add(Restrictions.eq(conditionKey, conditions
    .get(conditionKey)));
    } conditions.clear();
    orders.clear(); return super.getHibernateTemplate().findByCriteria(detachedCriteria);
    }
      

  9.   

    可以把条件封装成一个Bean,然后从页面取各个条件的值,再塞到这个Bean中. 有个按条件查询的方法有个参数就是这个Bean,先判断该Bean里的属性是否为空,如果不为空, 给加上条件, 最后返回要查询的list即可.
      

  10.   

    可以写个Conditions 类、
    里面是一些你需要的属性、比如房源地 house、价钱 money、大小 size、前台做个隐藏表单、封装这三个的隐藏控件如果需要很多搜索条件 (可以从数据库取出来所有条件),然后利用javascript或者jquery给 这三个控件赋值在提交给action、然后到后台接到conditions的条件,拆分且拼凑sql或者hql语句进行查询(会用到where 1=1 用于拼凑sql或者hql语句)前台需要的操作可能会多点、javascript/jquery +css+div
    思路就这样、
      

  11.   

    同问啊同问。
    拜读神人们的思路后想了个最土的思路。
    1、把所有要查询条件放入选择框内。
    2、where 1=1 +SQL条件+group by **。
    3、写代码吧。
    读过"sd4000784"大大的博客 基础太差 看不懂, 还是决定先用土办法。最近在从java 基础补起
      

  12.   

    如果有时间,像这种faceted search类似的功能我还是觉得用lucene比较好,并且solr现在上手不是太复杂,孙然一开始可能比用sql慢,但是后面如果查询条件扩展,会方便很多
      

  13.   

    SQL语句的拼接    暂时想到这
      

  14.   

    亲,你是用的什么结果过的网站啊????jsp+sevlert?还是SSH?还是其他的?大概思路就是你把页面高级查询的值封装搞一个Map集合里,去后台取,然后拼接sql语句!!!