How do I insert a new record into a database using JdbcTemplate?

The following example show you how to use the Spring’s JdbcTemplate class to insert a record into database.

package org.kodejava.spring.jdbc;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;
import java.sql.Types;
import java.util.Date;

public class InsertDemo {
    private static final String INSERT_QUERY =
            "INSERT INTO record (title, " +
                    "    release_date, " +
                    "    artist_id, " +
                    "    label_id, " +
                    "    created) " +
                    "VALUES (?, ?, ?, ?, ?)";

    private final DataSource dataSource;

    public InsertDemo(DataSource dataSource) {
        this.dataSource = dataSource;

    public static DriverManagerDataSource getDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        return dataSource;

    public static void main(String[] args) {
        InsertDemo demo = new InsertDemo(getDataSource());
        demo.saveRecord("Rock Beatles", new Date(), 1, 1);

    public void saveRecord(String title, Date releaseDate,
                           Integer artistId, Integer labelId) {
        // Creates an instance of JdbcTemplate and passes a connection
        // to the database.
        JdbcTemplate template = new JdbcTemplate(this.dataSource);

        // Defines the query arguments and the corresponding SQL types
        // of the arguments.
        Object[] params = new Object[]{
                title, releaseDate, artistId, labelId, new Date()
        int[] types = new int[]{

        // Calls JdbcTemplate.update() methods to create a new data
        // in the records table. The update method in general will
        // return number of row / rows processed by the executed query
        int row = template.update(INSERT_QUERY, params, types);
        System.out.println(row + " row inserted.");

Maven Dependencies


Maven Central Maven Central



    • Hi Anant,

      Using Spring JDBCTemplate you can do it in the following way to get the generated key.

      KeyHolder keyHolder = new GeneratedKeyHolder();
      template.update(connection -> {
          PreparedStatement ps = connection.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
          ps.setString(1, title);
          ps.setDate(2, new java.sql.Date(releaseDate.getTime()));
          ps.setInt(3, artistId);
          ps.setInt(4, labelId);
          ps.setDate(5, new java.sql.Date(new Date().getTime()));
          return ps;
      }, keyHolder);
      System.out.println("Key: " + Objects.requireNonNull(keyHolder.getKey()).longValue());

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.