diff --git a/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/DBConfig.java b/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/DBConfig.java new file mode 100644 index 0000000000..3907434239 --- /dev/null +++ b/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/DBConfig.java @@ -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); + } + } +} diff --git a/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/Person.java b/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/Person.java new file mode 100644 index 0000000000..e261a7d74c --- /dev/null +++ b/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/Person.java @@ -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; + } +} diff --git a/persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/insertnull/InsertNullUnitTest.java b/persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/insertnull/InsertNullUnitTest.java new file mode 100644 index 0000000000..508fa98e8f --- /dev/null +++ b/persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/insertnull/InsertNullUnitTest.java @@ -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)); + } + } +}