query()
SELECT
쿼리문 날릴 경우에 사용
- 쿼리문의 결과값이
여러개
일 경우에 사용 → 결과가 List
에 담김
// 쿼리문에 변수값이 없는 경우
public List<Customer> findAllCustomers() {
String sql = "select id, first_name, last_name from customers";
return jdbcTemplate.query(
sql,
(resultSet, rowNum) ->
new Customer(
resultSet.getString("first_name"),
resultSet.getString("last_name")
)
);
}
// 쿼리문에 변수값이 있는 경우
public List<Customer> findCustomerByFirstName(String firstName) {
String sql = "select id, first_name, last_name from customers where first_name = ?";
return jdbcTemplate.query(
sql,
(resultSet, rowNum) ->
new Customer(
resultSet.getString("first_name"),
resultSet.getString("last_name")
),
firstName
);
}
queryForObject()
SELECT
쿼리문을 날릴 경우에 사용
- 쿼리문의 결과값이
한 개
일 경우에 사용 → 반환되는 객체의 타입을 지정
- 반환값이 하나 인 것을 고정하여 값이 존재하지 않을 경우 예외 발생
// 쿼리문에 변수값이 없는 경우
public int count() {
String sql = "select count(*) from customers";
return jdbcTemplate.queryForObject(sql, Integer.class);
}
// 쿼리문에 변수값이 있는 경우
public String getLastName(Long id) {
String sql = "select last_name from customers where id = ?";
return jdbcTemplate.queryForObject(sql, String.class, id);
}
// 결과값을 객체로 만들 경우
public Customer findCustomerById(Long id) {
String sql = "select id, first_name, last_name from customers where id = ?";
return jdbcTemplate.queryForObject(
sql,
(resultSet, rowNum) ->
new Customer(
resultSet.getString("first_name"),
resultSet.getString("last_name")
),
id);
}
https://bepoz-study-diary.tistory.com/355