This Spring JDBC tutorial helps you understand how to use the SimpleJdbcInsert class with some code examples. The SimpleJdbcInsert class simplifies writing code to execute SQL INSERT statement, i.e. you don’t have to write lengthy and tedious SQL Insert statement anymore – just specify the table name, column names and parameter values.

 

1. Basic SimpleJdbcInsert Example

If using the JdbcTemplate class, you have to write an SQL Insert statement like this:

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sqlInsert = "INSERT INTO contact (name, email, address) VALUES (?, ?, ?)";
jdbcTemplate.update(sqlInsert, "Tom", "tomea@mail.com", "USA");
Now, let’s see how to use the SimpleJdbcInsert class. First, create a new instance:

SimpleJdbcInsert insertActor = new SimpleJdbcInsert(dataSource);
Next, specify the table name to insert data:

insertActor.withTableName("contact");
Next, create a Map of parameters:

Map<String, Object> params = new HashMap<>();
params.put("name", "Bill Gates");
params.put("email", "bill@microsoft.com");
params.put("address", "Seattle, USA");
Note that the key for each entry is the name of a column in the table. Then execute the statement like this:

int result = insertActor.execute(params);
The returned value is the number of rows affected by the query. The whole code snippet would be as follows:

SimpleJdbcInsert insertActor = new SimpleJdbcInsert(dataSource);
insertActor.withTableName("contact");

Map<String, Object> params = new HashMap<>();
params.put("name", "Bill Gates");
params.put("email", "bill@microsoft.com");
params.put("address", "Seattle, USA");

int result = insertActor.execute(params);

if (result > 0) {
	System.out.println("Insert Successfully!");
}
You see, you don’t have to write SQL Insert statement. And using named parameters same as the column names make the code more readable.



 

2. SimpleJdbcInsert Example that returns value of the auto-generated primary key

You can use the SimpleJdbcInsert class to execute SQL Insert statement and return value of the primary column which is auto-generated. Specify the name of the primary column as follows:

SimpleJdbcInsert insertActor = new SimpleJdbcInsert(dataSource);
insertActor.withTableName("contact").usingGeneratedKeyColumns("contact_id");
And then specify the parameter values and execute:

MapSqlParameterSource params = new MapSqlParameterSource();

params.addValue("name", "Steve Jobs")
	.addValue("email", "steve@apple.com")
	.addValue("address", "USA");

Number newId = insertActor.executeAndReturnKey(params);

if (newId != null) {
	System.out.println("Insert Successfully. New Id = " + newId.intValue());
}
You see, the executeAndReturnKey() method returns a Number object holding value of the auto-generated key of the primary column.

Also in this example, we use MapSqlParameterSource instead of HashMap to specify parameter values because it allows us to chain multiple addValue() methods together. Learn more about using named parameters with Spring JDBC in this tutorial.

 

3. SimpleJdbcInsert Example with BeanPropertySqlParameterSource

If you have a domain model class that follows JavaBean convention, you can use the SimpleJdbcInsert class with a BeanPropertySqlParameterSource class. Consider the following example:

SimpleJdbcInsert insertActor = new SimpleJdbcInsert(dataSource);
insertActor.withTableName("contact");

BeanPropertySqlParameterSource paramSource = new BeanPropertySqlParameterSource(contact);

int result = insertActor.execute(paramSource);

if (result > 0) {
	System.out.println("Insert Successfully!");
}
As you can see, you don’t even have to specify parameter names and values, as long as you provide an object that has attributes same as the column names in the database table. In the above code, the contact variable is an object of the Contact class as follows:

public class Contact {
	private Integer id;
	private String name;
	private String email;
	private String address;

	// getters 
	// setters
	
}
That’s how to use the SimpleJdbcInsert class in Spring JDBC. To understand how to configure your project to use Spring JDBC, please refer to the following tutorials:

 

Related Spring and Database Tutorials:

 

Other Spring Tutorials:


About the Author:

is certified Java programmer (SCJP and SCWCD). He began programming with Java back in the days of Java 1.4 and has been passionate about it ever since. You can connect with him on Facebook and watch his Java videos on YouTube.



Add comment