因为我要查一个表的所有内容,但是这个表的字段是不确定的,所以我怎么接受数据呢?后来学会了一种方法,就是这样
<select id="queryResult" parameterClass="Map" resultClass="java.util.LinkedHashMap" remapResults="true">
select * from $prcode$result where S_Code=$scode$
</select>
返回一个LinkdHashMap
然后dao层我是这样处理的
import java.util.LinkedHashMap;
public List<LinkedHashMap<String, String>> queryResult(Map<String,String> map){
List<LinkedHashMap<String, String>> listLinkedHashMap = new ArrayList<LinkedHashMap<String,String>>();
SampleDto dto=new SampleDto();
try {
listLinkedHashMap = getSqlMapClientTemplate().queryForList("queryResult",map);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return listLinkedHashMap;
}
这个是用来接收这个list集合的
service层什么的就不写了
就说我再action调用这个方法是如何调用的吧
import java.util.Map.Entry;
import java.util.Iterator;
List<LinkedHashMap<String, String>> listhash=projectService.queryResult(maps);
if(listhash != null && listhash.size() > 0){
int s = 0;// strColumnName 数组的下标
int t=0;
String[] strColumnName = new String[listhash.get(0).size()];// 创建查询出的全部字段的数组 listhash.get(0)代表取list第一个元素
Set<Entry<String, String>> set2 = listhash.get(0).entrySet();
for(Iterator<Entry<String, String>> it = set2.iterator(); it
.hasNext();){
Map.Entry entry = (Map.Entry) it.next();
strColumnName[s] = entry.getKey().toString();
System.out.println(strColumnName[s] );// 这个是遍历键名称
s++;
}
s=0;
t=0;
for(Iterator<Entry<String, String>> it = set2.iterator(); it
.hasNext();){
Map.Entry entry = (Map.Entry) it.next();
strColumnName[s]=entry.getValue().toString();
t=t+1;
s++;
}
updates.append(");^^\n");
}
==========================================================
package com.jerrys.jerseyrest.dao.impl;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedHashMap<String, String> map=new LinkedHashMap<String, String>();
map.put("a","aa");
map.put("b","bb");
map.put("c","cc");
for(int i=0;i<map.size();i++){
System.out.println(map.get(i));
}
int j = 0;// strColumnName 数组的下标
String[] strColumnName = new String[map.size()];// 创建查询出的全部字段的数组
Set<Entry<String, String>> set2 = map.entrySet();
for (Iterator<Entry<String, String>> it = set2.iterator(); it
.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
strColumnName[j] = entry.getKey().toString();
System.out.println(strColumnName[j]);
strColumnName[j]=entry.getValue().toString();
System.out.println(strColumnName[j]);
j++;
}
}
}