SpringJDBC 학습 (미션)

Jae-Baek Song·2023년 4월 12일
0

스프링

목록 보기
3/10

NamedParameterJdbcTemplate

NamedParameterJdbcTemplate은 JdbcTemplate의 확장판으로, JDBC의 PreparedStatement를 사용할 때 매개변수를 위치 정보대신 이름으로 지정할 수 있게 해줍니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.

https://chinggin.tistory.com/707

SqlParameterSource

명명된 SQL 파라미터의 파라미터 값을 제공할 수 있는 객체에 대한 공통의 기능을 정의하는 인터페이스로서, NamedParameterJdbcTemplate 오퍼레이션의 인수로 사용됩니다.

이 인터페이스를 사용하면 매개변수 값 외에도 SQL 유형을 지정할 수 있습니다. 모든 매개변수 값과 유형은 매개변수 이름을 지정하여 식별할 수 있습니다.

public MapSqlParameterSource addValue(String paramName, @Nullable Object value, int sqlType, String typeName) {
		Assert.notNull(paramName, "Parameter name must not be null");
		this.values.put(paramName, value);
		registerSqlType(paramName, sqlType);
		registerTypeName(paramName, typeName);
		return this;
	}

String firstName = "Song"

SqlParameterSource first_name = new MapSqlParameterSource()
                .addValue("first_name", firstName, java.sql.Types.VARCHAR, "VARCHAR");
                
System.out.println(first_name.getSqlType("first_name"));
System.out.println(first_name.getTypeName("first_name"));
System.out.println(first_name.getValue("first_name"));
System.out.println(first_name.getParameterNames());

//12
//VARCHAR
//John
//[Ljava.lang.String;@59c43561

MapSqlParameterSource

매개변수 맵을 보유하는 SqlParameterSource 구현
이 클래스의 addValue 메서드를 사용하면 메서드 체이닝으로 여러 값을 더 쉽게 추가할 수 있습니다.

BeanPropertySqlParameterSource

Spring BeanWrapper를 사용하여
Java Bean의 속성 값을 SQL 문의 파라미터로 매핑할 수 있습니다.


JdbcTemplate

RowMapper

RowMapper를 사용하면, 원하는 형태의 결과값을 반환할 수 있다.

queryForObject

쿼리를 실행하여 단일 결과 행을 결과 객체에 매핑합니다.

query

쿼리를 실행하여 다중 결과 행을 결과 객체에 매핑합니다.

update

update()는 SQL 연산을 통해 데이터베이스를 갱신시켜줄 때(INSERT, DELETE, UPDATE) 사용하는 메소드이다.

KeyHolder

update() 메소드는 변경된 행의 개수만 리턴하므로 자동 생성 된 키 값을 알아낼 수 없다.
keyHolder.getKey() 를 호출하여 해당 키를 검색할 수 있습니다 .


SimpleJdbcInsert

INSERT 작업에 특화된 클래스로, 테이블 명과 컬럼 명만 명시해주면 쿼리문 없이 쉽게 Insert 쿼리를 처리할 수 있다.

withTableName

삽입에 사용할 테이블 이름을 지정

usingGeneratedKeyColumns

자동 생성 키가 있는 열의 이름을 지정합니다.
자동 생성 키가 아니어도 검색할 수 있다.
자동 생성 키가 있더라도 반환받지 않는다면 작성하지 않아도 된다.

usingColumns

삽입 문에서 사용을 제한해야 하는 열 이름을 지정합니다.

0개의 댓글