@Repository
public class UserDao {
@Autowired
private JdbcTemplate template;
public User getUserById(String id) {
String sql = "select * from sample_users where user_id = ?";
// RowMapper의 구현체(인터페이스를 즉석에서 구현하는 익명객체)
return template.queryForObject(sql, new RowMapper<User>() {
public User mapRow(ResultSet rs, int rownum) throws SQLException {
User user = new User();
user.setId(rs.getString("user_id"));
user.setPassword(rs.getString("user_password"));
return user;
}
}, id); // id는 getUserById의 매개변수니까 인자값(파라미터값)으로 같이 전달해줘야 함
❓ 람다식 : 인터페이스의 구현부(매개변수와 구현코드)를 작성.
* 매개변수에 타입은 안적어도 됨
@FunctionalInterface
public interface RowMapper<T> {
....
}
@Repository
public class UserDao {
@Autowired
private JdbcTemplate template;
public User getUserById(String id) {
String sql = "select * from sample_users where user_id = ?";
return template.queryForObject(sql, (rs, rownum) -> {
User user = new User();
user.setId(rs.getString("user_id"));
user.setPassword(rs.getString("user_password"));
user.setName(rs.getString("user_name"));
user.setTel(rs.getString("user_tel"));
user.setEmail(rs.getString("user_email"));
return user;
}, id); // id는 getUserById의 매개변수니까 인자값(파라미터값)으로 같이 전달해줘야 함
}
}