खोज…


परिचय

JdbcTemplate क्लास SQL क्वेरीज़, स्टेटमेंट्स को अपडेट करती है और स्टोर की गई कॉल को अपडेट करती है, ResultSets पर पुनरावृत्ति करती है और लौटाए गए पैरामीटर मानों की निकासी होती है। यह JDBC अपवादों को भी पकड़ता है और उन्हें org.springframework.dao पैकेज में परिभाषित सामान्य, अधिक जानकारीपूर्ण, अपवाद पदानुक्रम में अनुवाद करता है।

JdbcTemplate वर्ग के उदाहरणों को एक बार कॉन्फ़िगर किया गया है ताकि यह सुरक्षित रूप से इस साझा संदर्भ को कई DAO में इंजेक्ट कर सके।

बुनियादी क्वेरी के तरीके

JdbcTemplate में उपलब्ध कुछ क्वेरी * मेथड्स सरल एसक्यूएल कथनों के लिए उपयोगी हैं जो CRUD ऑपरेशन करते हैं।

तिथि के लिए क्वेरी

String sql = "SELECT create_date FROM customer WHERE customer_id = ?";
int storeId = jdbcTemplate.queryForObject(sql, java.util.Date.class, customerId);

इंटेगर के लिए क्वेरी

String sql = "SELECT store_id FROM customer WHERE customer_id = ?";
int storeId = jdbcTemplate.queryForObject(sql, Integer.class, customerId);    

या

String sql = "SELECT store_id FROM customer WHERE customer_id = ?";
int storeId = jdbcTemplate.queryForInt(sql, customerId);                 //Deprecated in spring-jdbc 4

स्ट्रिंग के लिए क्वेरी

String sql = "SELECT first_Name FROM customer WHERE customer_id = ?";
String firstName = jdbcTemplate.queryForObject(sql, String.class, customerId);

सूची के लिए क्वेरी

String sql = "SELECT first_Name FROM customer WHERE store_id =  ?";
List<String> firstNameList = jdbcTemplate.queryForList(sql, String.class, storeId);

नक्शे की सूची के लिए प्रश्न

int storeId = 1;
DataSource dataSource = ... //
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "SELECT * FROM customer WHERE store_id = ?";
List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql, storeId);

for(Map<String, Object> entryMap : mapList)
{
  for(Entry<String, Object> entry : entryMap.entrySet())
  {
       System.out.println(entry.getKey() + " / " + entry.getValue());
  }
  System.out.println("---");
}

SQLRowSet

DataSource dataSource = ... //
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "SELECT * FROM customer";
SqlRowSet rowSet = jdbcTemplate.queryForRowSet(sql);

while(rowSet.next())
{
  String firstName = rowSet.getString("first_name");
  String lastName = rowSet.getString("last_name");
  System.out.println("Vorname: " + firstName);
  System.out.println("Nachname: " + lastName);
  System.out.println("---”);
}

या

String sql = "SELECT * FROM customer";
List<Customer> customerList = jdbcTemplate.query(sql, new RowMapper<Customer>()    {

  @Override
  public Customer mapRow(ResultSet rs, int rowNum) throws SQLException
  {
    Customer customer = new Customer();
    customer.setFirstName(rs.getString("first_Name"));
    customer.setLastName(rs.getString("first_Name"));
    customer.setEmail(rs.getString("email"));
 
    return customer;
  }

});

बैच संचालन

JdbcTemplate बैच संचालन को निष्पादित करने के लिए सुविधाजनक तरीके भी प्रदान करता है।

बैच डालें

final ArrayList<Student> list = // Get list of students to insert..
String sql = "insert into student (id, f_name, l_name, age, address) VALUES (?, ?, ?, ?, ?)"
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
        Student s = l.get(i);
        ps.setString(1, s.getId());
        ps.setString(2, s.getF_name());
        ps.setString(3, s.getL_name());
        ps.setInt(4, s.getAge());
        ps.setString(5, s.getAddress());
    }
    
    @Override
    public int getBatchSize() {
        return l.size();
    }
});

बैच अद्यतन

final ArrayList<Student> list = // Get list of students to update..
String sql = "update student set f_name = ?, l_name = ?, age = ?, address = ? where id = ?"
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
        Student s = l.get(i);
        ps.setString(1, s.getF_name());
        ps.setString(2, s.getL_name());
        ps.setInt(3, s.getAge());
        ps.setString(4, s.getAddress());
        ps.setString(5, s.getId());
    }
    
    @Override
    public int getBatchSize() {
        return l.size();
    }
});

आगे बैचअप विधियां हैं जो इनपुट मापदंडों के रूप में ऑब्जेक्ट सरणी की सूची को स्वीकार करते हैं। ये विधियाँ आंतरिक रूप से BatchPreparedStatementSetter का उपयोग सरणियों की सूची से sql स्टेटमेंट में मान सेट करने के लिए करती हैं।

NamedParameterJdbcTemplate JdbcTemplate का विस्तार

NamedParameterJdbcTemplate वर्ग ने JDBC के नाम का उपयोग करते हुए प्रोग्रामिंग मापदंडों के लिए समर्थन जोड़ा, जैसा कि केवल क्लासिक प्लेसहोल्डर ('?') तर्कों का उपयोग करके JDBC के प्रोग्रामिंग के विपरीत है। NamedParameterJdbcTemplate कक्षा एक लपेटता JdbcTemplate , और लिपटे प्रतिनिधियों JdbcTemplate अपने काम के लिए ज्यादा कुछ करने के लिए।

DataSource dataSource = ... //
NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);

String sql = "SELECT count(*) FROM customer WHERE city_name=:cityName";
Map<String, String> params = Collections.singletonMap("cityName", cityName);
int count = jdbcTemplate.queryForObject(sql, params, Integer.class);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow