2014-06-14 27 views
10

यदि क्वेरी द्वारा लौटाई गई कई पंक्तियां हैं तो क्या मैं queryForMap का उपयोग कर सकता हूं।जेडीबीसीटीप्लेट क्वेरी एकाधिक पंक्तियों को पुनर्प्राप्त करने के लिए फोरमैप

एक पंक्ति के लिए, नीचे कोड ठीक काम करता है।

public Map<String, Object> retrieveMultipleRowsColumns(String deptName){ 
    return jdbcTemplate.queryForMap("SELECT DEPT_ID,DEPT_NAME FROM DEPT WHERE DEPT_NAME = ?", deptName); 
} 

एकाधिक पंक्तियों के लिए इसे कैसे संशोधित करें?

+0

क्या डेटाबेस का उपयोग कर रहे? –

+0

मैं ओरेकल 10 जी का उपयोग कर रहा हूं; क्या यह डेटाबेस निर्भर है? – user182944

उत्तर

12

queryForListsee the javadoc for full details का उपयोग करें। यह रिटर्न List<Map<String,Object>>

public List<Map<String, Object>> retrieveMultipleRowsColumns(String deptName){ 
    return jdbcTemplate.queryForList("SELECT DEPT_ID,DEPT_NAME FROM DEPT WHERE DEPT_NAME = ?", deptName); 
} 
+4

मानचित्रों की एक सूची बहुत उपयोगी नहीं है। –

+1

गलत, संदर्भों के आधार पर मानचित्रों की एक सूची बहुत उपयोगी हो सकती है। –

-2
public <T> List<T> queryForList(String sql, 
          Class<T> elementType, 
          Object... args) 
       throws DataAccessException 

विवरण इंटरफ़ेस से नकल: JdbcOperations क्वेरी दिया SQL क्वेरी करने के लिए बाध्य करने के लिए, एक परिणाम सूची उम्मीद एसक्यूएल से एक तैयार बयान और तर्कों की सूची बनाने के लिए। परिणाम परिणाम ऑब्जेक्ट्स की सूची (प्रत्येक पंक्ति के लिए एक प्रविष्टि) में मैप किए जाएंगे, उनमें से प्रत्येक निर्दिष्ट तत्व प्रकार से मेल खाता है।

द्वारा निर्दिष्ट: इंटरफ़ेस JdbcOperations में queryForList, Parameters:sql - परिणाम सूची में तत्व की आवश्यक प्रकार (उदाहरण के लिए, Integer.class) args - - SQL क्वेरी निष्पादित करने के लिए elementType तर्क क्वेरी के लिए बाध्य करने के लिए (करने के लिए इसे छोड़ने इसी एसक्यूएल प्रकार का अनुमान लगाने के लिए तैयार स्थिति); यह भी हो सकता है contain SqlParameterValue वस्तुओं जो न केवल तर्क मूल्य, लेकिन यह भी एसक्यूएल प्रकार इंगित और बड़े पैमाने रिटर्न वैकल्पिक: वस्तुओं है कि निर्दिष्ट तत्व प्रकार से मेल की एक सूची फेंकता: DataAccessException - यदि क्वेरी failsSee इसके अलावा: JdbcOperations.queryForList (स्ट्रिंग, क्लास) , SingleColumnRowMapper

15

मैं जानता हूँ कि यह वास्तव में पुराना है, लेकिन वहाँ यह करने के लिए आप एक नक्शा के लिए देख रहे हैं एक बहुत सरल तरीका है।

यह निर्धारित करने के लिए कि आप किस प्रकार का रिटर्न देना चाहते हैं, बस ResultSetExtractor इंटरफ़ेस को लागू करें। नीचे इसका उपयोग करने का एक उदाहरण है। आप इसे मैन्युअल रूप से मैप कर देंगे, लेकिन एक साधारण मानचित्र के लिए, यह सीधा होना चाहिए।

jdbcTemplate.query("select string1,string2 from table where x=1", new ResultSetExtractor<Map>(){ 
    @Override 
    public Map extractData(ResultSet rs) throws SQLException,DataAccessException { 
     HashMap<String,String> mapRet= new HashMap<String,String>(); 
     while(rs.next()){ 
      mapRet.put(rs.getString("string1"),rs.getString("string2")); 
     } 
     return mapRet; 
    } 
}); 

यह आपको एक प्रकार का मानचित्र देगा जिसमें कई पंक्तियां होंगी (हालांकि आपकी कई क्वेरी लौटाई गई हैं) और मानचित्र की सूची नहीं है। आप यहाँ ResultSetExtractor डॉक्स देख सकते हैं: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/ResultSetExtractor.html

संबंधित मुद्दे