English 中文(简体)
Spring JDBC - JdbcTemplate
  • 时间:2025-02-05

Spring JDBC - JdbcTemplate Class


Previous Page Next Page  

The org.springframework.jdbc.core.JdbcTemplate class is the central class in the JDBC core package. It simppfies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving the apppcation code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the org.springframework.dao package.

Class Declaration

Following is the declaration for org.springframework.jdbc.core.JdbcTemplate class −


pubpc class JdbcTemplate
   extends JdbcAccessor
      implements JdbcOperations

Usage

    Step 1 − Create a JdbcTemplate object using a configured datasource.

    Step 2 − Use JdbcTemplate object methods to make database operations.

Example

Following example will demonstrate how to read a query using JdbcTemplate class. We ll read the available records in Student Table.

Syntax


String selectQuery = "select * from Student";
List <Student> students = jdbcTemplateObject.query(selectQuery, new StudentMapper());

Where,

    selectQuery − Select query to read students.

    jdbcTemplateObject − StudentJDBCTemplate object to read student object from the database.

    StudentMapper − StudentMapper is a RowMapper object to map each fetched record to the student object.

To understand the above-mentioned concepts related to Spring JDBC, let us write an example which will select a query. To write our example, let us have a working Ecppse IDE in place and use the following steps to create a Spring apppcation.

Step Description
1 Update the project Student created under chapter Spring JDBC - First Apppcation.
2 Update the bean configuration and run the apppcation as explained below.

Following is the content of the Data Access Object interface file StudentDAO.java.


package com.tutorialspoint;

import java.util.List;
import javax.sql.DataSource;

pubpc interface StudentDAO {
   /** 
      * This is the method to be used to initiapze
      * database resources ie. connection.
   */
   pubpc void setDataSource(DataSource ds);
   
   /** 
      * This is the method to be used to pst down
      * all the records from the Student table.
   */
   pubpc List<Student> pstStudents();   
}

Following is the content of the Student.java file.


package com.tutorialspoint;

pubpc class Student {
   private Integer age;
   private String name;
   private Integer id;

   pubpc void setAge(Integer age) {
      this.age = age;
   }
   pubpc Integer getAge() {
      return age;
   }
   pubpc void setName(String name) {
      this.name = name;
   }
   pubpc String getName() {
      return name;
   }
   pubpc void setId(Integer id) {
      this.id = id;
   }
   pubpc Integer getId() {
      return id;
   }
}

Following is the content of the StudentMapper.java file.


package com.tutorialspoint;

import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

pubpc class StudentMapper implements RowMapper<Student> {
   pubpc Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setId(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

Following is the implementation class file StudentJDBCTemplate.java for the defined DAO interface StudentDAO.


package com.tutorialspoint;

import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;

pubpc class StudentJDBCTemplate implements StudentDAO {
   private DataSource dataSource;
   private JdbcTemplate jdbcTemplateObject;
   
   pubpc void setDataSource(DataSource dataSource) {
      this.dataSource = dataSource;
      this.jdbcTemplateObject = new JdbcTemplate(dataSource);
   }
   pubpc List<Student> pstStudents() {
      String SQL = "select * from Student";
      List <Student> students = jdbcTemplateObject.query(SQL, new StudentMapper());
      return students;
   }
}

Following is the content of the MainApp.java file.


package com.tutorialspoint;

import java.util.List;
import org.springframework.context.ApppcationContext;
import org.springframework.context.support.ClassPathXmlApppcationContext;
import com.tutorialspoint.StudentJDBCTemplate;

pubpc class MainApp {
   pubpc static void main(String[] args) {
      ApppcationContext context = new ClassPathXmlApppcationContext("Beans.xml");
      StudentJDBCTemplate studentJDBCTemplate = (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");
      
      System.out.println("------Listing Multiple Records--------" );
      List<Student> students = studentJDBCTemplate.pstStudents();
      
      for (Student record : students) {
         System.out.print("ID : " + record.getId() );
         System.out.print(", Name : " + record.getName() );
         System.out.println(", Age : " + record.getAge());
      }
   }
}

Following is the configuration file Beans.xml.


<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">

   <!-- Initiapzation for data source -->
   <bean id="dataSource" 
      class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name = "driverClassName" value = "com.mysql.cj.jdbc.Driver"/>
      <property name = "url" value = "jdbc:mysql://localhost:3306/TEST"/>
      <property name = "username" value = "root"/>
      <property name = "password" value = "admin"/>
   </bean>

   <!-- Definition for studentJDBCTemplate bean -->
   <bean id="studentJDBCTemplate" 
      class = "com.tutorialspoint.StudentJDBCTemplate">
      <property name = "dataSource" ref = "dataSource" />    
   </bean>
</beans>

Once you are done creating the source and bean configuration files, let us run the apppcation. If everything is fine with your apppcation, it will print the following message.


------Listing Multiple Records--------
ID : 1, Name : Zara, Age : 11
ID : 2, Name : Nuha, Age : 2
ID : 3, Name : Ayan, Age : 15
Advertisements