问题这样:
  用hibernate查询数据库取得结果放在list中.
  select code,name from tbl;    现在我想根据code得到name
    例如:code=1001,name=csdn_one
          code=1002,name=csdn_two
    当我传入code=1001时,返回csnd_one;不知道我描述的明不明白,请指点!!多谢!

解决方案 »

  1.   

    你的List里,要么是放一些对象,要么是一些集合(如Map)
    循环List,把这些对象(或map)取出来,那你传进来的参数和这些对象(或map)中的"code"比较,如果相同,就返回"name"的值.拿Map举例:
    for(int i = 0; i < list.size(); i++) {

    Map map = (Map)list.get(i);

    if("1001".equals(map.get("code"))) {
    return map.get("name");
    }
    }
      

  2.   

    我觉得你可以使用一个 Map来存储从数据库中取得的结果,这样数据肯定会快一点,如果必须要用List的话,最好将List中数据按照 code进行排序,这样就可以使用二分法进行检索,效率比这种暴力搜索要高好多(当然指的是你的结果比较多的情况下。)最后顺带做个广告,在上海想学习Java的人,可以来 www.javaedu.com.cn看看。 :) 3Q。
      

  3.   

    楼上说的有些道理,
    不过,要是检索出多条数据的话,怎么往MAP里边放呢?学习ing
      

  4.   

    woniu02154(矿泉水瓶)
    现在我是用hibernate从数据库中查的结果,返回的应该是一个Object类型吧?
    那么从Object类型中,我应该怎样取值循环对比??
      

  5.   

    应该是一样的,hibernate中一般也是将它存成具体的某种类型,而不是直接搞个"Object",比如这个类型是"Result",那么这个"Result"中一定会写各成员的get\set方法,直接调用就可以了:for(int i = 0; i < list.size(); i++) {

    Result model = (Result)list.get(i);

    if("1001".equals(model.getCode())) {
    return model.getName();
    }
    }
      

  6.   

    woniu02154(矿泉水瓶):
    我是新手,您说的意思大体我明白,我想只针对我这个问题请您帮忙给个答案.
    我的意思就是想说:对于返回的list中的数据,想要提取出来
    您说的Map我运行报的数据转换错误,而用Result时没有get这个方法,因为我并不是存在pojo中.
    用hibernate的时候,我用的是
    String sql="select code,name from tbl"
    List list=...createQuery(sql.toString()).list();
    然后把其中的name值都打印出来.
    这样说,不知道清楚不?
      

  7.   

    Object [] o=(Object [])list.get(i);
    String code=o[0];
    System.out.println("code is :"+code);
    这样我可以取出code的值,但name的值我就不知道怎么取了.
      

  8.   

    你这个东西,我也不太了解
    这样吧,你断点跑进去看看List中的那些值是怎么放的,是不是这个name,放在o[1]里?
      

  9.   

    解决了,woniu02154(矿泉水瓶),非常感谢,您给我提个醒.是这样的:
    get(i)时转换成Object,这样,o[0]取的是第i行第一个字段的值,o[1]取的是第i行第二个字段的值,我在一开始也试了一次,o[1],但那时我把sql写成select code from tbl了,所以没再意这一点!多谢你!
      

  10.   

    没有用pojo,就只有自己绕过hibernate API了,用jdbc
    Connection conn=session.connection();
    Statement st=conn.CreateStatement();
    ResultSet rs=st.executeQuery("select code,name from tbl")....
      

  11.   

    没有必要查处list吧
    你可以把你想要的code=1001作为参数
    select name from tbl where code = 1001 ;
    这样不知道满足你的要求否