Skip to content

Instantly share code, notes, and snippets.

@ksundong
Last active April 23, 2020 12:48
Show Gist options
  • Select an option

  • Save ksundong/b2f08dcc07749e0273a8c2a4d17b43fc to your computer and use it in GitHub Desktop.

Select an option

Save ksundong/b2f08dcc07749e0273a8c2a4d17b43fc to your computer and use it in GitHub Desktop.
NaemdParameterJdbcTemplate Optional로 받을 수 있도록 만들기!
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SingleColumnRowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import javax.sql.DataSource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public class NamedParameterOptionalJdbcTemplate extends NamedParameterJdbcTemplate {
public NamedParameterOptionalJdbcTemplate(DataSource dataSource) {
super(dataSource);
}
public <T> Optional<T> queryForOptionalObject(String sql, SqlParameterSource parameterSource, RowMapper<T> rowMapper) {
return getJdbcOperations().query(getPreparedStatementCreator(sql, parameterSource), rowMapper).stream().findFirst();
}
public <T> Optional<T> queryForOptionalObject(String sql, Map<String, ?> paramMap, RowMapper<T> rowMapper) {
return queryForOptionalObject(sql, new MapSqlParameterSource(paramMap), rowMapper);
}
public <T> Optional<T> queryForOptionalObject(String sql, SqlParameterSource parameterSource, Class<T> requiredType) {
return queryForOptionalObject(sql, parameterSource, new SingleColumnRowMapper<>(requiredType));
}
public <T> Optional<T> queryForOptionalObject(String sql, Map<String, ?> paramMap, Class<T> requiredType) {
return queryForOptionalObject(sql, paramMap, new SingleColumnRowMapper<>(requiredType));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment