का उपयोग करके एकाधिक पंक्तियों को सम्मिलित करना मैं अपने SQL पर चल रहे JdbcTemplate का उपयोग कर स्केलेबल तरीके से निम्न SQL निष्पादित कैसे कर सकता हूं। इस मामले में, स्केलेबल साधन:JdbcTemplate
- केवल एक SQL विवरण सर्वर
- यह पंक्तियों के किसी भी संख्या के लिए काम करता है पर निष्पादित किया जाता है।
यहाँ बयान है:
INSERT INTO myTable (foo, bar) VALUES ("asdf", "asdf"), ("qwer", "qwer")
मान लें कि मैं foo
और bar
क्षेत्रों के साथ POJO के की एक सूची है। मुझे लगता है कि मैं सिर्फ सूची पर पुनरावृति सकता है और निष्पादित करें:
jdbcTemplate.update("INSERT INTO myTable(foo, bar) VALUES (?, ?)", paramMap)
लेकिन यह है कि पहली कसौटी की पूर्ति नहीं करता नहीं है।
मेरा मानना है कि मैं भी अमल कर सकते हैं:
jdbcTemplate.batchUpdate("INSERT INTO myTable(foo, bar) VALUES (?, ?)", paramMapArray)
लेकिन मैं क्या बता सकता से, कि बस एक बार एसक्यूएल संकलन और इसे कई बार निष्पादित, पहली कसौटी फिर नाकाम रहने देगा।
अंतिम मानदंड, जो दोनों मानदंडों को पारित करने लगता है, केवल StringBuffer
के साथ स्वयं SQL को बनाना होगा, लेकिन मैं इससे बचना चाहता हूं।
हम सिर्फ JDBC का उपयोग कर भी ऐसा ही कर सकते हैं? ? –
इसका जेडीबीसी टेम्पलेट, या यहां तक कि जेडीबीसी के साथ कुछ लेना देना नहीं है। आप SQL, अवधि (या मानक SQL, वैसे भी) में ऐसा नहीं कर सकते हैं, इसलिए आप निश्चित रूप से JdbcTemplate में ऐसा नहीं कर सकते हैं। – skaffman
@ स्काफमैन: मैंने अपने प्रश्न को यह कहने के लिए अद्यतन किया है कि मैं mySQL का उपयोग कर रहा हूं। हो सकता है कि यह एक MySQL-only सुविधा है, लेकिन यह http://dev.mysql.com/doc/refman/5.1/en/insert.html पर नीचे की एक चौथाई के बारे में वर्णित है: "INSERT कथन जो VALUES वाक्यविन्यास का उपयोग कर सकते हैं ऐसा करने के लिए, ऐसा करने के लिए, कॉलम मानों की कई सूचियों को शामिल करें, प्रत्येक कोष्ठक के भीतर संलग्न किया गया है और अल्पविराम से अलग किया गया है। उदाहरण: " –