DAO层文件中有很多查询语句,但怎么查询那些查询条件为两个字段以上的?比如,select * from  when 字段1=123 and 字段2=456;
那些文件都是FINDBY字段名(??)大家帮忙一下,谢谢了

解决方案 »

  1.   

    就是在DAO层生的那个组合属性查询是什么样子。我这个不知道为什么就是生成不了。
      

  2.   

    public List findByProperty(String propertyName, Object value) {
    log.debug("finding Users instance with property: " + propertyName
    + ", value: " + value);
    try {
    String queryString = "from Users as model where model."
    + propertyName + "= ?";
    return getHibernateTemplate().find(queryString, value);
    } catch (RuntimeException re) {
    log.error("find by property name failed", re);
    throw re;
    }
    }
      

  3.   

    上面是我生成的只能查询单个属性条件的查询方法。组合查询应该是这样的,public List findByProperty(String propertyName[], Object value[]) 但是内容怎么写??
      

  4.   

    为什么不考虑使用findByExample(对象)呢,不过这个不能解决复杂的SQL查询
      

  5.   

    楼主 下面是我给的例子片段   希望对你有帮助
    public List findByProperty(String propertyName[], Object value[]){
    String sql = "from Users as model where";
    for(int i = 0; i < propertyName.length -1; i++){
    if(i == 0){
    sql += " model." + propertyName[i] + "= ?";
    }else{
    sql += " and model." + propertyName[i] + "= ?";
    }
    }
    return createQuery(sql, value).list();
    }
    public Query createQuery(String queryString, Object... values) {
    Assert.hasText(queryString);
    Query queryObject = getSession().createQuery(queryString);
    if (values != null) {
    for (int i = 0; i < values.length; i++) {
    queryObject.setParameter(i, values[i]);
    }
    }
    return queryObject;
    }
    祝你好运
      

  6.   

    不好意思  Object... 改成Object[]吧
      

  7.   

    十分感谢楼上的,要的就是这个,呵呵
    再多问一句,我的DAO层是逆向工程生成的,为什么就没生成出这段代码呢??到是生成了一个findByProperty(String propertyName, Object value),这个是用于单项条件的
      

  8.   

    public List findByProperty(String propertyName[], Object value[]) {
    log.debug("finding Users instance with property: " + propertyName
    + ", value: " + value);
    String queryString = "from Users as model where";
    try {
    for (int i = 0; i < propertyName.length; i++)   
            {  if(i == 0 ){
             queryString += " model."+ propertyName[i] + "= ?";
             }else{
             queryString += " and model."+ propertyName[i] + "= ?";
             }
            }
    return getHibernateTemplate().find(queryString, value);
    } catch (RuntimeException re) {
    log.error("find by property name failed", re);
    throw re;
    }
    }
      

  9.   

    最终是这样解决的,我的项目是SSH的。DAO是逆向出来的。用Spring来完成事务管理。再次感谢7楼及其他楼的兄弟们