From 239da42aabd8c8a485461c3570be235a4578f3ac Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Wed, 26 May 2021 00:14:14 +0200 Subject: [PATCH 1/4] insert null into Integer column using JDBC --- .../com/baeldung/insertnull/DBConfig.java | 30 +++++++++++ .../java/com/baeldung/insertnull/Person.java | 48 +++++++++++++++++ .../insertnull/InsertNullUnitTest.java | 52 +++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/DBConfig.java create mode 100644 persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/Person.java create mode 100644 persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/insertnull/InsertNullUnitTest.java 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..391eb0999c --- /dev/null +++ b/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/insertnull/DBConfig.java @@ -0,0 +1,30 @@ +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 Exception { + if (INSTANCE == null) { + Class.forName("org.h2.Driver"); + INSTANCE = DriverManager.getConnection("jdbc:h2:mem:insertnull", "user", "password"); + createPersonTable(); + } + return INSTANCE; + } + + private static void createPersonTable() { + 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); + } catch (SQLException e) { + e.printStackTrace(); + } + } +} 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..7004779949 --- /dev/null +++ b/persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/insertnull/InsertNullUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.insertnull; + +import org.hamcrest.CoreMatchers; +import org.hamcrest.MatcherAssert; +import org.junit.jupiter.api.Test; + +import java.sql.Connection; +import java.sql.PreparedStatement; +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 Exception { + 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)); + } catch (Exception ignored) { + } + } + + @Test + public void givenNewPerson_whenSetObjectIsUsed_thenNewRecordIsCreated() throws Exception { + 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)); + } catch (Exception ignored) { + } + } +} From 07af5a2687b9f1d4807ca655b3758611faa7c1b0 Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Thu, 3 Jun 2021 12:26:02 +0200 Subject: [PATCH 2/4] insert null into Integer column using JDBC - code improvements --- .../main/java/com/baeldung/insertnull/DBConfig.java | 10 +++------- .../com/baeldung/insertnull/InsertNullUnitTest.java | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) 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 index 391eb0999c..3907434239 100644 --- 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 @@ -9,22 +9,18 @@ public class DBConfig { private static Connection INSTANCE; - public static Connection getConnection() throws Exception { + public static Connection getConnection() throws SQLException { if (INSTANCE == null) { - Class.forName("org.h2.Driver"); INSTANCE = DriverManager.getConnection("jdbc:h2:mem:insertnull", "user", "password"); createPersonTable(); } return INSTANCE; } - private static void createPersonTable() { - try { - Statement statement = INSTANCE.createStatement(); + 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); - } catch (SQLException e) { - e.printStackTrace(); } } } 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 index 7004779949..55319c626c 100644 --- 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 @@ -1,11 +1,9 @@ package com.baeldung.insertnull; -import org.hamcrest.CoreMatchers; -import org.hamcrest.MatcherAssert; import org.junit.jupiter.api.Test; -import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.SQLException; import java.sql.Types; import static org.hamcrest.CoreMatchers.equalTo; @@ -16,7 +14,7 @@ public class InsertNullUnitTest { private final String SQL = "INSERT INTO Person VALUES(?,?,?,?)"; @Test - public void givenNewPerson_whenSetNullIsUsed_thenNewRecordIsCreated() throws Exception { + public void givenNewPerson_whenSetNullIsUsed_thenNewRecordIsCreated() throws SQLException { Person person = new Person(1, "John", "Doe", null); try (PreparedStatement preparedStatement = DBConfig.getConnection().prepareStatement(SQL)) { @@ -30,12 +28,11 @@ public class InsertNullUnitTest { int noOfRows = preparedStatement.executeUpdate(); assertThat(noOfRows, equalTo(1)); - } catch (Exception ignored) { } } @Test - public void givenNewPerson_whenSetObjectIsUsed_thenNewRecordIsCreated() throws Exception { + public void givenNewPerson_whenSetObjectIsUsed_thenNewRecordIsCreated() throws SQLException { Person person = new Person(2, "John", "Doe", null); try (PreparedStatement preparedStatement = DBConfig.getConnection().prepareStatement(SQL)) { @@ -46,7 +43,6 @@ public class InsertNullUnitTest { int noOfRows = preparedStatement.executeUpdate(); assertThat(noOfRows, equalTo(1)); - } catch (Exception ignored) { } } } From 1a6361606c7557a33aa33b2e9551053a58d8a859 Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Tue, 8 Jun 2021 18:08:30 +0200 Subject: [PATCH 3/4] insert null into Integer column using JDBC - final code review --- .../java/com/baeldung/insertnull/InsertNullUnitTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 index 55319c626c..aeb01ef278 100644 --- 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 @@ -21,10 +21,12 @@ public class InsertNullUnitTest { preparedStatement.setInt(1, person.getId()); preparedStatement.setString(2, person.getName()); preparedStatement.setString(3, person.getLastName()); - if (person.getAge() == null) + if (person.getAge() == null){ preparedStatement.setNull(4, Types.INTEGER); - else + } + else{ preparedStatement.setInt(4, person.getAge()); + } int noOfRows = preparedStatement.executeUpdate(); assertThat(noOfRows, equalTo(1)); From 59b3081d466ba0de82c9d02e32eaf4347bfc8863 Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Wed, 9 Jun 2021 10:08:55 +0200 Subject: [PATCH 4/4] insert null into Integer column using JDBC - minor formatting --- .../test/java/com/baeldung/insertnull/InsertNullUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index aeb01ef278..508fa98e8f 100644 --- 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 @@ -21,10 +21,10 @@ public class InsertNullUnitTest { preparedStatement.setInt(1, person.getId()); preparedStatement.setString(2, person.getName()); preparedStatement.setString(3, person.getLastName()); - if (person.getAge() == null){ + if (person.getAge() == null) { preparedStatement.setNull(4, Types.INTEGER); } - else{ + else { preparedStatement.setInt(4, person.getAge()); } int noOfRows = preparedStatement.executeUpdate();