SSH的框架,因為涉及到一個比較復雜的查詢方法,所以就用直接寫的sql語句,
用Query q = getSession().createSQLQuery(sql);執行
結果保存在一個list中:List = q.list();
查詢結果list的size是對的,我想取出list中的每一個值,
於是,我for(int i=0; i<l.size; i++)
可是System.out.println(l.get(i));全是[Ljava.lang.Object;@13a46b6這樣的。
因為取出來的數據沒有相對應的實體類,所以我該如何做?
查詢結果有2列,一列是id,一列是名稱
我想把它們放在Map里,用l.get(i)作為map的key值,l.get(i+1)作為map的value值,
可是這樣put進去的也是Ljava.lang.Object;@13a46b6這樣的吧?
在線等~~~
19 个解决方案
l.get(i).toString();結果是Ljava.lang.Object;@13a46b6
(String)l.get(i);報錯
String.valueOf(l.get(i));結果也是Ljava.lang.Object;@13a46b6
用Iterator進行容器的遍歷
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
因為取出來的數據沒有相對應的實體類,所以我該如何做?
沒有對應的實體類,那么取出來的肯定是object了。l.get(i) get到的也肯定是object了。
既然用了hibernate,就建議寫一個實體類,然后你想取字段放到map里不就easy了嗎。
得到的是對象數組集合, 每個數組表示一個row, 用下標得到數組中的每個元素, 然后強轉成相應的類型
Map map = new HashMap();
for(int i=0;i<l.size;i++){
Object[] object = l.get(i);
if(i%2==0){
for(int j=0;j<object.length;j++){
map.put(object[i],object[i+1]);
}
}
}
當心數組越界哦。。。。。。。
你用的是ssh開發
如果你是要將list在頁面顯示的話,不用再用map裝了。
直接用你本來的把查詢的list在頁面使用<s:iterator id="f" value="%{list}" >
就行了。
List l = query.list();
for(int i=0;i< l.size();i++){
Object[] object = (Object[]) l.get(i);
for(int j=0;j<object.length;j++){
if(j==0){
int n = (Integer)object[j];
String s = (String)object[j+1];
System.out.println("n="+ n+ "s="+s);
你自己在裝進map里面吧。
}
}
}
用Iterator進行容器的遍歷
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
然后進行相應的類型轉換
在使用ssh的時候 返回的結果集如果是多個表中的字段,在相應的list里面的對象也是用數組對象去存儲的,
比如list.get(0)[0]是第一個對象
list.get(0)[1]是第二個對象
你取出來的實體,你要打印實體的某一個屬性才行啊!不輸出一個屬性值,當然就是一個實體輸出來了哦