자바 프로그램에서 SQL문을 실행하여 데이터를 관리하기 위한 JAVA API
**application.properties** → datasource setting 해주기 !!
: url, username, password, driver-class-name 추가.
// @추가 + final = 생성자 자동 생성, DB 주입 완료 !
@Component
@RequiredArgsConstructor
public class SpringJdbc {
// 스프링에서 만들어 놓은 DB 처리 템플릿 !
private final JdbcTemplate template; // CRUD 편해짐
// INSERT : Person 클래스에 삽입하는 save 기능
public void save(Person person) { // Person 클래스 생성 !
// 1. sql문 작성
String sql = "INSERT INTO tbl_person VALUES (?, ?, ?)";
// 2. ? ? ? 삽입할 값 채워주기
template.update(sql, person.getId(), person.getPersonName(), person.getPersonAge());;
}
// DELETE
public boolean delete(long id) { // 파라미터 타입 같게 잘 넣기 !
String sql = "DELETE FROM tbl_person WHERE id = ?";
int result = template.update(sql, id);
return result == 1; // true
}
}
// Person 클래스
@Getter @Setter @ToString
@EqualsAndHashCode
@NoArgsConstrouctor
@AllArgsConstrouctor
public class Person {
private long id; // mariaDB에 만들어둔 컬럼명들 !
private String personName;
private int personAge;
}
만들어둔 기능이 잘 돌아가는지 테스트 클래스 세팅
: public 붙이기 X / 테스트할 클래스를 필드로 넣고 주입하기 !
@SpringBootTest
class SpringJdbcTest {
// 테스트할 클래스 필드 !
@AutoWired
SpringJdbc springJdbc;
// 단위 테스트 프레임워크 : JUnit5
// 테스트 == 단언(arrsert)
@Test
@DisplayName("사람의 정보를 입력하면 데베에 반드시 저장되어야 한다.")
void saveTest() {
// given : 테스트에 주어질 데이터
Person p = new Person(77, "칠칠이", 7); // 삽입될 데이터
// when : 테스트 상황
int result = springJdbc.save(p); // 테스트할 기능
// then : 테스트 결과 단언(arrsert)
assertEquals(1, result); // 테스트 돌렸는데 테스트 결과가 1 과 동일한걸 단언해 !
}
@Test
@DisplayName("아이디가 주어지면 해당 아이디의 사람정보가 데베로부터 삭제되어야 한다.")
void deleteTest() {
// 삭제할 데이터
long id = 77;
boolean result = springJdbc.delete(id);
assertTrue(result); // boolean 타입 테스트 시 true인 결과가 나올 걸 단언
}
}