Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
스프링 JDBC - 제공 메서드
스프링 JdbcTemplate 클래스 제공 메서드
- queryForObject: 하나의 결과 레코드 중 하나의 컬럼 값을 가져올 때 사용
- queryForMap: 하나의 결과 레코드 정보를 Map 형태로 매핑할 수 있음
- queryForList: 여러개의 Map 형태의 결과 레코드를 다룰 수 있음
- query: 여러개의 레코드를 객체로 변환하여 처리
- Update: 데이터의 변경을 실행할 경우 사용
SELECT문
취득 결과가 레코드 건수 또는 특정 컬럼만 취득할 경우
-
queryForObject사용 방식 1
- 제 1인수: SQL 문자열
- 제 2인수: 반환형 클래스 오브첵트
JdbcTemplate jdbcTemplate = ctx.getBean(JdbcTemplate.class); int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM STUDENT", Integer.class);
사용 방식 2
- 제 1인수: SQL 문자열
- 제2인수 : 반환형 클래스 오브젝트(String)
- 제 3인수 : 파라미터 값
String name = jdbcTemplate.queryForObject("SELECT username FROM STUDENT WHERE id= ?", String.class, id);
취득 결과가 한 레코드 값을 취득할 경우
-
queryForMap레코드 값을 Map데이터로
Map<String, Object> student = jdbcTemplate.queryForMap("SELECT * FROM STUDENT WHERE id= ?", id); String name = (String)student.get("username"); -
queryForList여러 레코드 값을 Map데이터로
List<Map<String, Object>> studentList = jdbcTemplate.queryForMap("SELECT * FROM STUDENT ");
도메인으로 변환할 경우
queryForObject하나의 레코드를 가져오는 경우- 제 1인수: SELECT 문
- 제 2인수: 도메인 자동 변환을 위한 스프링 제공 클래스
BeanPropertyRowMapper - 제 3인수: SELECT 문의 파라미터
- BeanPropertyRowMapper를 사용할 경우 VO의 프로퍼티 명과 테이블 컬럼 명이 같아야 한다.
query여러 레코드를 가져오는 경우- RowMapper 인터페이스를 구현한 익명 클래스를 정의
- 클래스내 mapRow() 추상 메서드를 정의
INSERT / UPDATE / DELETE 문
모두 update 메서드를 사용해 구현
- INSERT
StudentVO vo;
jdbcTemplate.update(
"INSERT INTO STUDENT (ID, PASSWD, USERNAME, SNUM, DEPART, MOBILE, EMAIL) VALUES (?, ?, ?, ?, ?, ?, ?) ",
vo.getId(), vo.getPasswd(), vo.getUsername(), vo.getSnum(), vo.getDepart(), vo.getMobile(), vo.getEmail()
);
- DELETE
StudentVO vo;
jdbcTemplate.update( “DELETE FROM STUDENT WHERE ID=? “, vo.getId());