NamedParameterJdbcTemplate은 JdbcTemplate의 확장판으로, JDBC의 PreparedStatement를 사용할 때 매개변수를 위치 정보대신 이름으로 지정할 수 있게 해줍니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.
https://chinggin.tistory.com/707
명명된 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
매개변수 맵을 보유하는 SqlParameterSource 구현
이 클래스의 addValue
메서드를 사용하면 메서드 체이닝으로 여러 값을 더 쉽게 추가할 수 있습니다.
Spring BeanWrapper를 사용하여
Java Bean의 속성 값을 SQL 문의 파라미터로 매핑할 수 있습니다.
RowMapper를 사용하면, 원하는 형태의 결과값을 반환할 수 있다.
쿼리를 실행하여 단일 결과 행을 결과 객체에 매핑합니다.
쿼리를 실행하여 다중 결과 행을 결과 객체에 매핑합니다.
update()는 SQL 연산을 통해 데이터베이스를 갱신시켜줄 때(INSERT, DELETE, UPDATE) 사용하는 메소드이다.
update() 메소드는 변경된 행의 개수만 리턴하므로 자동 생성 된 키 값을 알아낼 수 없다.
keyHolder.getKey() 를 호출하여 해당 키를 검색할 수 있습니다 .
INSERT 작업에 특화된 클래스로, 테이블 명과 컬럼 명만 명시해주면 쿼리문 없이 쉽게 Insert 쿼리를 처리할 수 있다.
삽입에 사용할 테이블 이름을 지정
자동 생성 키가 있는 열의 이름을 지정합니다.
자동 생성 키가 아니어도 검색할 수 있다.
자동 생성 키가 있더라도 반환받지 않는다면 작성하지 않아도 된다.
삽입 문에서 사용을 제한해야 하는 열 이름을 지정합니다.