diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index f1b7c407bd..ec7f0bcec2 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -72,6 +72,7 @@
spring-jpa
spring-persistence-simple
+ spring-persistence-simple-2
diff --git a/persistence-modules/spring-persistence-simple-2/pom.xml b/persistence-modules/spring-persistence-simple-2/pom.xml
new file mode 100644
index 0000000000..8380d635de
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple-2/pom.xml
@@ -0,0 +1,60 @@
+
+
+ 4.0.0
+ spring-persistence-simple-2
+ 0.1-SNAPSHOT
+ spring-persistence-simple-2
+
+
+ com.baeldung
+ persistence-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+
+ org.springframework
+ spring-orm
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-context
+ ${org.springframework.version}
+
+
+
+
+ com.h2database
+ h2
+ ${h2.version}
+ test
+
+
+
+
+ org.springframework
+ spring-test
+ ${org.springframework.version}
+ test
+
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
+
+
+
+
+ 5.2.4.RELEASE
+
+ 1.4.200
+
+ 3.3.3
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java
new file mode 100644
index 0000000000..a43eb265c7
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java
@@ -0,0 +1,44 @@
+package com.baeldung.jdbc;
+
+public class Employee {
+ private int id;
+
+ private String firstName;
+
+ private String lastName;
+
+ private String address;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(final int id) {
+ this.id = id;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(final String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(final String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(final String address) {
+ this.address = address;
+ }
+
+}
diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java
new file mode 100644
index 0000000000..b5bf9452ed
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java
@@ -0,0 +1,21 @@
+package com.baeldung.jdbc;
+
+import javax.sql.DataSource;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class EmployeeDAO {
+ private JdbcTemplate jdbcTemplate;
+
+ public void setDataSource(DataSource dataSource) {
+ jdbcTemplate = new JdbcTemplate(dataSource);
+ }
+
+ public int getCountOfEmployees() {
+ return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM EMPLOYEE", Integer.class);
+ }
+
+
+}
diff --git a/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/schema.sql b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/schema.sql
new file mode 100644
index 0000000000..3401c5d963
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/schema.sql
@@ -0,0 +1,7 @@
+CREATE TABLE EMPLOYEE
+(
+ ID int NOT NULL PRIMARY KEY,
+ FIRST_NAME varchar(255),
+ LAST_NAME varchar(255),
+ ADDRESS varchar(255)
+);
\ No newline at end of file
diff --git a/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/test-data.sql b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/test-data.sql
new file mode 100644
index 0000000000..c1669c156d
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/test-data.sql
@@ -0,0 +1,4 @@
+INSERT INTO EMPLOYEE VALUES (1, 'James', 'Gosling', 'Canada');
+INSERT INTO EMPLOYEE VALUES (2, 'Donald', 'Knuth', 'USA');
+INSERT INTO EMPLOYEE VALUES (3, 'Linus', 'Torvalds', 'Finland');
+INSERT INTO EMPLOYEE VALUES (4, 'Dennis', 'Ritchie', 'USA');
\ No newline at end of file
diff --git a/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java b/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java
new file mode 100644
index 0000000000..71e8fb4263
--- /dev/null
+++ b/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java
@@ -0,0 +1,51 @@
+package com.baeldung.jdbc;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import javax.sql.DataSource;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+import org.springframework.test.util.ReflectionTestUtils;
+
+
+@RunWith(MockitoJUnitRunner.class)
+
+public class EmployeeDAOUnitTest {
+ @Mock
+ JdbcTemplate jdbcTemplate;
+
+ @Test
+ public void whenMockJdbcTemplate_thenReturnCorrectEmployeeCount() {
+ EmployeeDAO employeeDAO = new EmployeeDAO();
+ ReflectionTestUtils.setField(employeeDAO, "jdbcTemplate", jdbcTemplate);
+ Mockito.when(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM EMPLOYEE", Integer.class))
+ .thenReturn(4);
+
+ assertEquals(4, employeeDAO.getCountOfEmployees());
+
+ Mockito.when(jdbcTemplate.queryForObject(Mockito.anyString(), Mockito.eq(Integer.class)))
+ .thenReturn(3);
+
+ assertEquals(3, employeeDAO.getCountOfEmployees());
+ }
+
+ @Test
+ public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount() {
+ DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
+ .addScript("classpath:jdbc/schema.sql")
+ .addScript("classpath:jdbc/test-data.sql")
+ .build();
+
+ EmployeeDAO employeeDAO = new EmployeeDAO();
+ employeeDAO.setDataSource(dataSource);
+
+ assertEquals(4, employeeDAO.getCountOfEmployees());
+ }
+}