parent
c30b23a140
commit
5230638d73
|
@ -0,0 +1,96 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.example</groupId>
|
||||||
|
<artifactId>spring-jdbc-2</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>spring-jdbc-2</name>
|
||||||
|
<description>Demo project for Spring Jdbc</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>parent-boot-3</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<relativePath>../../parent-boot-3</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-jdbc</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<compilerArgs>--enable-preview</compilerArgs>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>spring-milestones</id>
|
||||||
|
<name>Spring Milestones</name>
|
||||||
|
<url>https://repo.spring.io/milestone</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>spring-snapshots</id>
|
||||||
|
<name>Spring Snapshots</name>
|
||||||
|
<url>https://repo.spring.io/snapshot</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</releases>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<pluginRepositories>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>spring-milestones</id>
|
||||||
|
<name>Spring Milestones</name>
|
||||||
|
<url>https://repo.spring.io/milestone</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</pluginRepository>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>spring-snapshots</id>
|
||||||
|
<name>Spring Snapshots</name>
|
||||||
|
<url>https://repo.spring.io/snapshot</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</releases>
|
||||||
|
</pluginRepository>
|
||||||
|
</pluginRepositories>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<java.version>17</java.version>
|
||||||
|
<spring-boot.version>3.2.0-SNAPSHOT</spring-boot.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<Student> 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<Student> 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<Student> 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<Student> getStudentsOfGradeStateAndGenderWithParamMap(Map<String, ?> 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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -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<List<Student>> {
|
||||||
|
@Override
|
||||||
|
public List<Student> extractData(ResultSet rs) throws SQLException {
|
||||||
|
List<Student> students = new ArrayList<Student>();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<Student> {
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
DROP TABLE student;
|
|
@ -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');
|
|
@ -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<Student> 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<Student> 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<Student> 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<String, ?> paramMap = Map.of(
|
||||||
|
"grade", 1,
|
||||||
|
"gender", "Male",
|
||||||
|
"state", "New York"
|
||||||
|
);
|
||||||
|
List<Student> 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="15 seconds" debug="false">
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>[%d{ISO8601}]-[%thread] %-5level %logger - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="STDOUT" />
|
||||||
|
</root>
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue