
spring:
datasource:
url: "jdbc:mysql://localhost/library" //접근하려는 mysql이 localhost에 있다. 접근하려는 DB는 libray
username: "root" //mysql에 접근하기 위한 계정명
password: "" //mysql 비밀번호
drvier-class-name: com.mysql.cj.jdbc.Driver
//데이터베이스에 접근할 때 사용할 프로그램
//Ctrl + 클릭: 실제 드라이버 코드 확인 가능
#DataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring_db
spring.datasource.username=spring_user
spring.datasource.password=abc123
#enable jdbc log
logging.level.org.springframework.jdbc=debug
@Table
@Id
@Table
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Member {
@Id
private Long id;
private String name;
private String email;
private Integer age;
}
테이블과 연동하기 위한 모델 객체 작성
@Table 어노테이션을 사용해 클래스와 테이블 연동
PK 제약조건을 부여할 컬럼과 매핑될 필드에 @Id 어노테이션 사용
Ctrl + Shift + N : 파일 찾기Controller에서@RestController
public class UserController {
private final JdbcTemplate jdbcTemplate; //JDBC에 대한 클래스
public UserController(JdbcTemplate jdbcTemplate) { //JDBC 선언 후 생성자 생성
this.jdbcTemplate = jdbcTemplate;
}
@PostMapping("/user")
public void saveUser(@RequestBody UserCreateRequest request) {
String sql = "INSERT INTO user(name, age) VALUES(?, ?)";
jdbcTemplate.update(sql, request.getName(), request.getAge());
// 기존) users.add(new User(request.getName(), request.getAget()));
}
}
Ctrl + O : 오버라이드가 필요한 매개
Alt + enter : 람다식 변경
@GetMapping("/user")
public List<UserResponse> getUsers() {
String sql = "SELECT * FROM user";
return jdbcTemplate.query(sql, new RowMapper<UserResponse>() { //RowMapper 구현 익명클래스)
@Override
public UserResponse mapRow(ResultSet rs, int rowNum) throws SQLException {
long id = rs.getLong("id");
String name = rs.getString("name");
int age = rs.getInt("age");
return new UserResponse(id, name, age); // id, name, age 생성자룰 UserResponse에 만들어준다
}
});
}
@GetMapping("/user")
public List<UserResponse> getUsers() {
String sql = "SELECT * FROM user";
return jdbcTemplate.query(sql, (rs, rowNum) -> {
long id = rs.getLong("id");
String name = rs.getString("name");
int age = rs.getInt("age");
return new UserResponse(id, name, age);
}
});
}
//람다식 활용방법
@PutMapping("/user")
public void updateUser(@RequestBody UserUpdateRequest request) {
String readSql = "SELECT * FROM user WHERE id =?";
boolean isUserNotExist = jdbcTemplate.query(readSql, (rs, rowNum) -> 0, request.getId()).isEmpty();
if(isUserNotExist){
throw new IllegalArgumentException();
}
String sql = "UPDATE user SEt name = ? WHERE id = ?";
jdbcTemplate.update(sql, request.getName(), request.getID();
}