insert, update, delete 처럼 구현하면 원하는 결과를 얻을 수 없다.
조회 결과(ResultSet)를 어떻게 담을 것인지를 정의해야 한다.
조회 결과를 담기 위한 객체 생성용 클래스가 필요(DTO, Data Transfer Object)
변환 방법을 정의하는 객체를 생성(RowMapper)
mapRow 메소드에 기본 제공하는 ResultSet을 StoreDto로 이동하도록 구현
조회를 위한 별도의 명령을 사용(query)
조회에서 홀더(?)를 사용하는 방법
항목은 데이터가 아니므로 홀더(?)를 사용하지 못한다.
String sql = "select * from store where instr(name, ?) > 0";
Object[] param = {keyword}; //홀더만 **{}** 안에 변수를 기입.
단일 조회(상세 조회)
- 단 하나의 데이터만 조회하기 위한 형태
- PK(primary key)를 이용하여 조회
Spring JDBC에 사용하는 도구들을 생성해주는 유틸리티
static 메서드로 구현해서 간단하게 호출하여 사용 가능하도록 구현
다른 클래스에서 아래와 같이 한 문장으로 호출하여 긴 코드를 간편히 사용할 수 있다.
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
public class JdbcUtils {
//계정 및 연결 주소를 상수 형태로 보관
public static final String DRIVER = "oracle.jdbc.OracleDriver";
public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe";
public static final String USERNAME = "USERNAME";
public static final String PASSWORD = "PASSWORD";
//연결 객체 생성 메서드
public static DriverManagerDataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(DRIVER);
dataSource.setUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
return dataSource;
}
//명령 실행 객체 생성 메서드
public static JdbcTemplate getJdbcTemplate() {
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(getDataSource());
return jdbcTemplate;
}
}