Merge pull request #10807 from mladensavic94/master

insert null into Integer column using JDBC
This commit is contained in:
Jonathan Cook 2021-06-09 11:15:43 +02:00 committed by GitHub
commit 425e63a6e8
3 changed files with 124 additions and 0 deletions

View File

@ -0,0 +1,26 @@
package com.baeldung.insertnull;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConfig {
private static Connection INSTANCE;
public static Connection getConnection() throws SQLException {
if (INSTANCE == null) {
INSTANCE = DriverManager.getConnection("jdbc:h2:mem:insertnull", "user", "password");
createPersonTable();
}
return INSTANCE;
}
private static void createPersonTable() throws SQLException {
try(Statement statement = INSTANCE.createStatement()) {
String sql = "CREATE TABLE Person (id INTEGER not null, name VARCHAR(50), lastName VARCHAR(50), age INTEGER, PRIMARY KEY (id))";
statement.executeUpdate(sql);
}
}
}

View File

@ -0,0 +1,48 @@
package com.baeldung.insertnull;
public class Person {
private Integer id;
private String name;
private String lastName;
private Integer age;
public Person(Integer id, String name, String lastName, Integer age) {
this.id = id;
this.name = name;
this.lastName = lastName;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}

View File

@ -0,0 +1,50 @@
package com.baeldung.insertnull;
import org.junit.jupiter.api.Test;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
public class InsertNullUnitTest {
private final String SQL = "INSERT INTO Person VALUES(?,?,?,?)";
@Test
public void givenNewPerson_whenSetNullIsUsed_thenNewRecordIsCreated() throws SQLException {
Person person = new Person(1, "John", "Doe", null);
try (PreparedStatement preparedStatement = DBConfig.getConnection().prepareStatement(SQL)) {
preparedStatement.setInt(1, person.getId());
preparedStatement.setString(2, person.getName());
preparedStatement.setString(3, person.getLastName());
if (person.getAge() == null) {
preparedStatement.setNull(4, Types.INTEGER);
}
else {
preparedStatement.setInt(4, person.getAge());
}
int noOfRows = preparedStatement.executeUpdate();
assertThat(noOfRows, equalTo(1));
}
}
@Test
public void givenNewPerson_whenSetObjectIsUsed_thenNewRecordIsCreated() throws SQLException {
Person person = new Person(2, "John", "Doe", null);
try (PreparedStatement preparedStatement = DBConfig.getConnection().prepareStatement(SQL)) {
preparedStatement.setInt(1, person.getId());
preparedStatement.setString(2, person.getName());
preparedStatement.setString(3, person.getLastName());
preparedStatement.setObject(4, person.getAge(), Types.INTEGER);
int noOfRows = preparedStatement.executeUpdate();
assertThat(noOfRows, equalTo(1));
}
}
}