2012-03-30 16 views
5

मैं एक एमएस SqlServer डीबी से डेटा लाने के लिए वसंत JdbcTemplate इंटरफेस का उपयोग कर रहा हूँ। प्रलेखन में मुझे लगता है कि सभी प्रश्नों के लिए सीमा निर्धारित करने के लिए setMaxRows() विधि है, लेकिन यदि मैं केवल एक चयन को सीमित करना चाहता हूं तो क्या होगा?वसंत जेडीबीसी टेम्पलेट: चयनित पंक्तियों को कैसे सीमित करें?

क्या "कॉन्फ़िगर करने योग्य" तरीके से केवल एक विशिष्ट आवक क्वेरी के लिए सीमा निर्धारित करने का कोई तरीका है?

+0

उन कथनों के लिए अपने स्वयं के तैयार किए गए स्टेटमेंट निर्माता का उपयोग करने के बारे में क्या और तैयार वक्तव्य बनाते वक्त स्टेटमेंट.सेटमैक्सरो() पर कॉल करें? –

+0

@a_horse_with_no_name जो एक अच्छा विचार प्रतीत होता है, क्या आप मुझे 'प्रीपेडस्टेटमेंट क्रिएटर' का उपयोग करने का कुछ उदाहरण प्रदान कर सकते हैं, मैं वसंत के लिए नया हूं ... – davioooh

+1

मैं खुद स्प्रिंग के लिए नया हूं, अन्यथा मैंने एक उदाहरण के साथ एक जवाब जोड़ा होगा:) –

उत्तर

2

किसी विशिष्ट क्वेरी के परिणाम सेट को सीमित करना सीमा को सीधे क्वेरी में डालकर किया जा सकता है। यह देखने के लिए कि क्या यह LIMIT उदाहरण के लिए समर्थन करता है, अपने डीबी विक्रेता दस्तावेज़ीकरण से परामर्श लें। MySQL पर

उदाहरण: SELECT * FROM EMPLOYEE LIMIT 10

+0

या 'चयन * कर्मचारी से ROWNUM <10' कहां से चुनें। – adarshr

+0

@jabal yes, मुझे पता है, लेकिन मेरे विधि कार्यान्वयन में, सीमा वैकल्पिक है, इसलिए, यदि आपको सीधे SQL का उपयोग करके क्वेरी को सीमित करना है, तो आपको दो अलग-अलग प्रश्न लिखना होगा ... – davioooh

+0

ऐसे मामलों में मैं आमतौर पर निर्माण करता हूं "कोड या सीमा-सीमा" मामलों को अलग-अलग संभालने वाले मेरे कोड में क्वेरी स्ट्रिंग और फिर इसे निष्पादित करें। मुझे कोई बेहतर समाधान नहीं पता, उत्सुक अगर कोई करता है .. :-) – jabal

4

कुछ एसक्यूएल आधारित क्वेरी भाषाओं (डर्बी) LIMIT कीवर्ड का समर्थन नहीं करता। तो आप सीधे क्वेरी में LIMIT का उपयोग नहीं कर सकते हैं। स्प्रिंग JDBC टेम्पलेट का उपयोग कर हम के माध्यम से setMaxRows(Integer intvalue)

jdbcTemplate.setMaxRows(1); 
1

आप क्वेरी में उपयोगकर्ता सीमा कीवर्ड कर सकते हैं की जरूरत पंक्तियों की अधिकतम संख्या निर्धारित कर सकते हैं। क्वेरी

select * from FileShare limit 3 offset 3 

नीचे देखें आपके आवेदन की सीमा में है, तो और ऑफसेट क्वेरी

@Autowired 
private JdbcTemplate template; 

public JdbcTemplate getTemplate() { 
    return HibernateUtil.getJdbcTemplate(); 
} 

public List<FileShare> getAllSharedFiless(int limit,int offset) 
      throws ShareMeException { 
String query="select * from FileShare limit ? offset ?"; 
     return getTemplate().query(query, 
       new SharedFilesRowMapper(), 
       new Object[]{limit,offset}); 

} 

यहाँ FileShare नीचे उपयोग उपयोगकर्ता द्वारा गतिशील रूप से आवंटित किया जा सकता है एक मेज नाम है और SharedFilesRowMapper मेज से जो सूची पंक्तियों rowMapper है।

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