From 5230638d73f6291c5fc8f0aeb1b343b51324e454 Mon Sep 17 00:00:00 2001
From: parthiv39731 <70740707+parthiv39731@users.noreply.github.com>
Date: Thu, 19 Oct 2023 19:32:23 +0530
Subject: [PATCH] BAEL-7135 A Guide to Spring 6 JdbcClient API
---
persistence-modules/spring-jdbc-2/pom.xml | 96 ++++++++++++++++
.../jdbcClient/JdbcClientDemoApplication.java | 14 +++
.../baeldung/jdbcClient/dao/StudentDao.java | 95 ++++++++++++++++
.../baeldung/jdbcClient/model/Student.java | 60 ++++++++++
.../model/StudentResultExtractor.java | 26 +++++
.../jdbcClient/model/StudentRowMapper.java | 20 ++++
.../application.properties | 5 +
.../com.baeldung.jdbcClient/drop_student.sql | 1 +
.../com.baeldung.jdbcClient/student.sql | 98 ++++++++++++++++
.../jdbcClient/JdbcClientUnitTest.java | 106 ++++++++++++++++++
.../src/test/resources/logback-test.xml | 12 ++
11 files changed, 533 insertions(+)
create mode 100644 persistence-modules/spring-jdbc-2/pom.xml
create mode 100644 persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/JdbcClientDemoApplication.java
create mode 100644 persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/dao/StudentDao.java
create mode 100644 persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/Student.java
create mode 100644 persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentResultExtractor.java
create mode 100644 persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentRowMapper.java
create mode 100644 persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/application.properties
create mode 100644 persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/drop_student.sql
create mode 100644 persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/student.sql
create mode 100644 persistence-modules/spring-jdbc-2/src/test/java/com/baeldung/jdbcClient/JdbcClientUnitTest.java
create mode 100644 persistence-modules/spring-jdbc-2/src/test/resources/logback-test.xml
diff --git a/persistence-modules/spring-jdbc-2/pom.xml b/persistence-modules/spring-jdbc-2/pom.xml
new file mode 100644
index 0000000000..79c5ad100c
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/pom.xml
@@ -0,0 +1,96 @@
+
+
+ 4.0.0
+
+ org.example
+ spring-jdbc-2
+ 1.0-SNAPSHOT
+ spring-jdbc-2
+ Demo project for Spring Jdbc
+
+
+ com.baeldung
+ parent-boot-3
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-3
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
+
+
+ com.h2database
+ h2
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ --enable-preview
+
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ false
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ false
+
+
+
+
+
+ 17
+ 3.2.0-SNAPSHOT
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/JdbcClientDemoApplication.java b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/JdbcClientDemoApplication.java
new file mode 100644
index 0000000000..fe1a203eff
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/JdbcClientDemoApplication.java
@@ -0,0 +1,14 @@
+package com.baeldung.jdbcClient;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+@SpringBootApplication
+@ComponentScan(basePackages = "com.baeldung.jdbcClient")
+public class JdbcClientDemoApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(JdbcClientDemoApplication.class, args);
+ }
+}
diff --git a/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/dao/StudentDao.java b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/dao/StudentDao.java
new file mode 100644
index 0000000000..4ca2046a0e
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/dao/StudentDao.java
@@ -0,0 +1,95 @@
+package com.baeldung.jdbcClient.dao;
+
+import com.baeldung.jdbcClient.model.Student;
+import com.baeldung.jdbcClient.model.StudentResultExtractor;
+import com.baeldung.jdbcClient.model.StudentRowMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.RowCountCallbackHandler;
+import org.springframework.jdbc.core.simple.JdbcClient;
+import org.springframework.stereotype.Repository;
+
+import java.sql.Types;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+@Repository
+public class StudentDao {
+
+ private static final Logger logger = LoggerFactory.getLogger(StudentDao.class);
+ @Autowired
+ private JdbcClient jdbcClient;
+
+ public Integer insertWithSetParamWithNamedParamAndSqlType(Student student) {
+ String sql = "INSERT INTO student (student_name, age, grade, gender, state)"
+ + "VALUES (:name, :age, :grade, :gender, :state)";
+ Integer noOfrowsAffected = this.jdbcClient.sql(sql)
+ .param("name", student.getStudentName(), Types.VARCHAR)
+ .param("age", student.getAge(), Types.INTEGER)
+ .param("grade", student.getGrade(), Types.INTEGER)
+ .param("gender", student.getStudentGender(), Types.VARCHAR)
+ .param("state", student.getState(), Types.VARCHAR)
+ .update();
+ logger.info("No. of rows affected: " + noOfrowsAffected);
+ return noOfrowsAffected;
+ }
+
+ public List getStudentsOfGradeStateAndGenderWithPositionalParams(int grade, String state, String gender) {
+ String sql = "select student_id, student_name, age, grade, gender, state from student"
+ + " where grade = ? and state = ? and gender = ?";
+ return jdbcClient.sql(sql)
+ .param(grade)
+ .param(state)
+ .param(gender)
+ .query(new StudentRowMapper()).list();
+ }
+
+ public List getStudentsOfGradeStateAndGenderWithParamIndex(int grade, String state, String gender) {
+ String sql = "select student_id, student_name, age, grade, gender, state from student"
+ + " where grade = ? and state = ? and gender = ?";
+ return jdbcClient.sql(sql)
+ .param(1,grade)
+ .param(2, state)
+ .param(3, gender)
+ .query(new StudentResultExtractor());
+ }
+
+ public Student getStudentsOfGradeStateAndGenderWithParamsInVarargs(int grade, String state, String gender) {
+ String sql = "select student_id, student_name, age, grade, gender, state from student"
+ + " where grade = ? and state = ? and gender = ? limit 1";
+ return jdbcClient.sql(sql)
+ .params(grade, state, gender)
+ .query(new StudentRowMapper()).single();
+ }
+
+ public Optional getStudentsOfGradeStateAndGenderWithParamsInList(List params) {
+ String sql = "select student_id, student_name, age, grade, gender, state from student"
+ + " where grade = ? and state = ? and gender = ? limit 1";
+ return jdbcClient.sql(sql)
+ .params(params)
+ .query(new StudentRowMapper()).optional();
+ }
+
+
+ public int getCountOfStudentsOfGradeStateAndGenderWithNamedParam(int grade, String state, String gender) {
+ String sql = "select student_id, student_name, age, grade, gender, state from student"
+ + " where grade = :grade and state = :state and gender = :gender";
+ RowCountCallbackHandler countCallbackHandler = new RowCountCallbackHandler();
+ jdbcClient.sql(sql)
+ .param("grade", grade)
+ .param("state", state)
+ .param("gender", gender)
+ .query(countCallbackHandler);
+ return countCallbackHandler.getRowCount();
+ }
+
+ public List getStudentsOfGradeStateAndGenderWithParamMap(Map paramMap) {
+ String sql = "select student_id, student_name, age, grade, gender, state from student"
+ + " where grade = :grade and state = :state and gender = :gender";
+ return jdbcClient.sql(sql)
+ .params(paramMap)
+ .query(new StudentRowMapper()).list();
+ }
+}
diff --git a/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/Student.java b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/Student.java
new file mode 100644
index 0000000000..2e4ff69464
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/Student.java
@@ -0,0 +1,60 @@
+package com.baeldung.jdbcClient.model;
+
+public class Student {
+ private Integer studentId;
+ private String studentName;
+ private String studentGender;
+ private Integer age;
+ private Integer grade;
+
+ public Integer getStudentId() {
+ return studentId;
+ }
+
+ public void setStudentId(Integer studentId) {
+ this.studentId = studentId;
+ }
+
+ public String getStudentName() {
+ return studentName;
+ }
+
+ public void setStudentName(String studentName) {
+ this.studentName = studentName;
+ }
+
+ public String getStudentGender() {
+ return studentGender;
+ }
+
+ public void setStudentGender(String studentGender) {
+ this.studentGender = studentGender;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Integer getGrade() {
+ return grade;
+ }
+
+ public void setGrade(Integer grade) {
+ this.grade = grade;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ private String state;
+
+}
diff --git a/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentResultExtractor.java b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentResultExtractor.java
new file mode 100644
index 0000000000..2bc8a249c5
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentResultExtractor.java
@@ -0,0 +1,26 @@
+package com.baeldung.jdbcClient.model;
+
+import org.springframework.jdbc.core.ResultSetExtractor;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class StudentResultExtractor implements ResultSetExtractor> {
+ @Override
+ public List extractData(ResultSet rs) throws SQLException {
+ List students = new ArrayList();
+ while(rs.next()) {
+ Student student = new Student();
+ student.setStudentId(rs.getInt("student_id"));
+ student.setStudentName(rs.getString("student_name"));
+ student.setAge(rs.getInt("age"));
+ student.setStudentGender(rs.getString("gender"));
+ student.setGrade(rs.getInt("grade"));
+ student.setState(rs.getString("state"));
+ students.add(student);
+ }
+ return students;
+ }
+}
diff --git a/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentRowMapper.java b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentRowMapper.java
new file mode 100644
index 0000000000..22a98e0efa
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/java/com/baeldung/jdbcClient/model/StudentRowMapper.java
@@ -0,0 +1,20 @@
+package com.baeldung.jdbcClient.model;
+
+import org.springframework.jdbc.core.RowMapper;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class StudentRowMapper implements RowMapper {
+ @Override
+ public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
+ Student student = new Student();
+ student.setStudentId(rs.getInt("student_id"));
+ student.setStudentName(rs.getString("student_name"));
+ student.setAge(rs.getInt("age"));
+ student.setStudentGender(rs.getString("gender"));
+ student.setGrade(rs.getInt("grade"));
+ student.setState(rs.getString("state"));
+ return student;
+ }
+}
diff --git a/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/application.properties b/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/application.properties
new file mode 100644
index 0000000000..04c963ebf4
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/application.properties
@@ -0,0 +1,5 @@
+# DataSource Configuration
+spring.datasource.url=jdbc:h2:mem:testdb
+spring.datasource.driverClassName=org.h2.Driver
+spring.datasource.username=user
+spring.datasource.password= # Leave this empty
\ No newline at end of file
diff --git a/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/drop_student.sql b/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/drop_student.sql
new file mode 100644
index 0000000000..954545a862
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/drop_student.sql
@@ -0,0 +1 @@
+DROP TABLE student;
\ No newline at end of file
diff --git a/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/student.sql b/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/student.sql
new file mode 100644
index 0000000000..0e137f5445
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/main/resources/com.baeldung.jdbcClient/student.sql
@@ -0,0 +1,98 @@
+
+CREATE TABLE student (
+ student_id INT AUTO_INCREMENT PRIMARY KEY,
+ student_name VARCHAR(255) NOT NULL,
+ age INT,
+ grade INT NOT NULL,
+ gender VARCHAR(10) NOT NULL,
+ state VARCHAR(100) NOT NULL
+);
+-- Student 1
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('John Smith', 18, 3, 'Male', 'California');
+
+-- Student 2
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Emily Johnson', 17, 2, 'Female', 'New York');
+
+-- Student 3
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Michael Davis', 4, 1, 'Male', 'Texas');
+
+-- Student 4
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Sophia Martinez', 2, 1, 'Female', 'Florida');
+
+-- Student 5
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('William Brown', 5, 5, 'Male', 'California');
+
+-- Student 6
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Olivia Garcia', 4, 2, 'Female', 'Texas');
+
+-- Student 7
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Ethan Rodriguez', 3, 1, 'Male', 'New York');
+
+-- Student 8
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Ava Hernandez', 2, 1, 'Female', 'Florida');
+
+-- Student 9
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('James Wilson', 5, 4, 'Male', 'Texas');
+
+-- Student 10
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Emma Miller', 3, 1, 'Female', 'California');
+
+-- Student 11
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Benjamin Brown', 4, 1, 'Male', 'New York');
+
+-- Student 12
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Mia Smith', 2, 1, 'Female', 'Florida');
+
+-- Student 13
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Daniel Johnson', 5, 4, 'Male', 'California');
+
+-- Student 14
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Ava Davis', 4, 2, 'Female', 'Texas');
+
+-- Student 15
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Matthew Martinez', 3, 1, 'Male', 'New York');
+
+-- Student 16
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Sophia Taylor', 2, 1, 'Female', 'Florida');
+
+-- Student 17
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Alexander White', 5, 4, 'Male', 'California');
+
+-- Student 18
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Olivia Johnson', 4, 2, 'Female', 'Texas');
+
+-- Student 19
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Christopher Lee', 3, 1, 'Male', 'New York');
+
+-- Student 20
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Emma Wilson', 2, 1, 'Female', 'Florida');
+
+-- Student 21
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Elijah Smith', 5, 3, 'Male', 'Texas');
+
+-- Student 22
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Isabella Davis', 4, 2, 'Female', 'California');
+
+-- Student 23
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Liam Johnson', 3, 1, 'Male', 'New York');
+
+-- Student 24
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Olivia Garcia', 2, 1, 'Female', 'Florida');
+
+-- Student 25
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Noah Rodriguez', 5, 3, 'Male', 'Texas');
+
+-- Student 26
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Sophia Hernandez', 4, 2, 'Female', 'California');
+
+-- Student 27
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Mason Smith', 3, 1, 'Male', 'New York');
+
+-- Student 28
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Ava Taylor', 2, 1, 'Female', 'Florida');
+
+-- Student 29
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('William Brown', 5, 5, 'Male', 'Texas');
+
+-- Student 30
+INSERT INTO student (student_name, age, grade, gender, state) VALUES ('Olivia Martinez', 4, 4, 'Female', 'California');
diff --git a/persistence-modules/spring-jdbc-2/src/test/java/com/baeldung/jdbcClient/JdbcClientUnitTest.java b/persistence-modules/spring-jdbc-2/src/test/java/com/baeldung/jdbcClient/JdbcClientUnitTest.java
new file mode 100644
index 0000000000..b07a3c16f0
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/test/java/com/baeldung/jdbcClient/JdbcClientUnitTest.java
@@ -0,0 +1,106 @@
+package com.baeldung.jdbcClient;
+
+import com.baeldung.jdbcClient.dao.StudentDao;
+import com.baeldung.jdbcClient.model.Student;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.jdbc.Sql;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@RunWith(SpringRunner.class)
+@Sql(value = "/com.baeldung.jdbcClient/student.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
+@Sql(value = "/com.baeldung.jdbcClient/drop_student.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
+@SpringBootTest(classes = JdbcClientDemoApplication.class)
+@TestPropertySource(locations = {"classpath:com.baeldung.jdbcClient/application.properties"})
+public class JdbcClientUnitTest {
+ private static final Logger logger = LoggerFactory.getLogger(JdbcClientUnitTest.class);
+
+ @Autowired
+ private StudentDao studentDao;
+
+ @Test
+ public void givenJdbcClient_whenInsertWithNamedParamAndSqlType_thenSuccess() {
+ logger.info("testing invoked successfully");
+ Student student = getSampleStudent("Johny Dep", 8, 4, "Male", "New York");
+ assertEquals(1, studentDao.insertWithSetParamWithNamedParamAndSqlType(student));
+ }
+
+ @Test
+ public void givenJdbcClient_whenQueryWithPositionalParams_thenSuccess() {
+ logger.info("testing invoked successfully");
+ List students = studentDao.getStudentsOfGradeStateAndGenderWithPositionalParams(
+ 1, "New York", "Male");
+ logger.info("number of students fetched " + students.size());
+ assertEquals(6, students.size());
+ }
+
+ @Test
+ public void givenJdbcClient_whenQueryWithParamsInVarargs_thenSuccess() {
+ logger.info("testing invoked successfully");
+ Student student = studentDao.getStudentsOfGradeStateAndGenderWithParamsInVarargs(
+ 1, "New York", "Male");
+ assertNotNull(student);
+ }
+
+ @Test
+ public void givenJdbcClient_whenQueryWithParamsInList_thenSuccess() {
+ logger.info("testing invoked successfully");
+ List params = List.of(1, "New York", "Male");
+ Optional optional = studentDao.getStudentsOfGradeStateAndGenderWithParamsInList(params);
+ if(optional.isPresent()) {
+ assertNotNull(optional.get());
+ } else {
+ assertThrows(NoSuchElementException.class, () -> optional.get());
+ }
+ }
+
+ @Test
+ public void givenJdbcClient_whenQueryWithParamsIndex_thenSuccess() {
+ logger.info("testing invoked successfully");
+ List students = studentDao.getStudentsOfGradeStateAndGenderWithParamIndex(
+ 1, "New York", "Male");
+ assertEquals(6, students.size());
+ }
+ @Test
+ public void givenJdbcClient_whenQueryWithNamedParam_thenSuccess() {
+ logger.info("testing invoked successfully");
+ Integer count = studentDao.getCountOfStudentsOfGradeStateAndGenderWithNamedParam(
+ 1, "New York", "Male");
+ logger.info("number of students fetched " + count);
+ assertEquals(6, count);
+ }
+ @Test
+ public void givenJdbcClient_whenQueryWithParamMap_thenSuccess() {
+ logger.info("testing invoked successfully");
+ Map paramMap = Map.of(
+ "grade", 1,
+ "gender", "Male",
+ "state", "New York"
+ );
+ List students = studentDao.getStudentsOfGradeStateAndGenderWithParamMap(paramMap);
+ logger.info("number of students fetched " + students.size());
+ assertEquals(6, students.size());
+ }
+
+ private Student getSampleStudent(String name, int age, int grade, String gender, String state) {
+ Student student = new Student();
+ student.setStudentName(name);
+ student.setStudentGender(gender);
+ student.setAge(age);
+ student.setGrade(grade);
+ student.setState(state);
+ return student;
+ }
+}
diff --git a/persistence-modules/spring-jdbc-2/src/test/resources/logback-test.xml b/persistence-modules/spring-jdbc-2/src/test/resources/logback-test.xml
new file mode 100644
index 0000000000..8d4771e308
--- /dev/null
+++ b/persistence-modules/spring-jdbc-2/src/test/resources/logback-test.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ [%d{ISO8601}]-[%thread] %-5level %logger - %msg%n
+
+
+
+
+
+
+
\ No newline at end of file