


Insert Query에 Value Mapping 하기
💡 update()
JdbcTemplate는 DAO객체에서 DB와 연동하기 위해 SQL 연산들을 수행 할 수 있도록 도와주는 기술인데,
update()는 SQL 연산을 통해 데이터베이스를 갱신시켜줄 때(INSERT, DELETE, UPDATE) 사용하는 메소드이다.
✏️ INSERT
치환자(?)를 가진 SQL로 PreparedStatement를 만들고 함께 제공하는 파라미터를 순서대로 바인딩해주는 기능을 가진
update() 메소드를 사용할 수 있다.
SQL과 함께 가변인자로 선언된 파라미터를 제공해주면 된다.
다시 말해 update(sql쿼리문,쿼리문에 들어갈 변수들)
public void add(Hospital hospital) {
String sql = "INSERT INTO `likelion-db`.`nation_wide_hospitals` (`id`, `open_service_name`, `open_local_goverment_code`, `management_number`, `license_date`, `business_status`, `business_status_code`, `phone`, `full_address`, `road_name_address`, `hospital_name`, `business_type_name`, `healthcare_provider_count`, `patient_room_count`, `total_number_of_beds`, `total_area_size`)" +
" VALUES (?,?,?," +
" ?,?,?," +
" ?,?,?," +
" ?,?,?," +
" ?,?,?," +
" ?);"; // 16개
this.jdbcTemplate.update(sql,
hospital.getId(), hospital.getOpenServiceName(), hospital.getOpenLocalGovermentCode(),
hospital.getManagementNumber(), hospital.getLicenseDate(), hospital.getBusinessStatus(),
hospital.getBusinessStatusCode(), hospital.getPhone(), hospital.getFullAddress(),
hospital.getRoadNameAddress(), hospital.getHospitalName(), hospital.getBusinessTypeName(),
hospital.getHealthcareProviderCount(), hospital.getPatientRoomCount(), hospital.getTotalNumberOfBeds(),
hospital.getTotalAreaSize()
);
}
public void deleteAll() {
this.jdbcTemplate.update("delete from nation_wide_hospitals");
}
deleteAll 메서드는 데이터를 전부 삭제하기 때문에 insert 와 마찬가지로 리턴 값이 없는 void로 설정 전부 삭제이기 때문에 치환자에 넣어줄 단어도 없으므로 sql문만 넣고 바로 실행한다.
public int getCount() {
String sql = "select count(id) from nation_wide_hospitals;";
return this.jdbcTemplate.queryForObject(sql, Integer.class);
}
this.jdbcTemplate.queryForObject(sql, sql문의 결과 값을 어떤 자료형으로 나오게 할지 정한다.)
RowMapper<Hospital> rowMapper = (rs, rowNum) -> {
Hospital hospital = new Hospital(
rs.getInt("id"),
rs.getString("open_service_name"),
rs.getInt("open_local_government_code"),
rs.getString("management_number"),
rs.getTimestamp("license_date").toLocalDateTime(),
rs.getInt("business_status"),
rs.getInt("business_status_code"),
rs.getString("phone"),
rs.getString("full_address"),
rs.getString("road_name_address"),
rs.getString("hospital_name"),
rs.getString("business_type_name"),
rs.getInt("healthcare_provider_count"),
rs.getInt("patient_room_count"),
rs.getInt("total_number_of_beds"),
rs.getFloat("total_area_size")
);
return hospital;
};
public Hospital findById(int id) throws ClassNotFoundException, SQLException {
String sql = "select * from nation_wide_hospital where id = ?";
return this.jdbcTemplate.queryForObject(sql, rowMapper, id);
}