IT 기술/[JAVA] Spring Boot
14-3. Flyway 사용해보기 - Java-based Mirgrations
Lee Hye Won
2021. 5. 26. 07:39
# 파일명을 정의할 때 역시 Flyway 가 인식할 수 있도록 명명규칙을 따라주어야 하며, 여기선 'V3__bulk_update_books.java' 로 지정하였다. 이때 경로는 src/java 하위에 바로 db/migration 경로를 생성해주었고 그 안에 java 파일을 위치한다.
BaseJavaMigration 을 상속받아 migrate 함수를 Override 하여 사용해주면 된다.
createStatement 를 통해 쿼리를 생성할 수 있는 객체를 만들고, SELECT 를 통해 가져온 rows 를 하나하나 while 문으로 돌려가며
UPDATE 쿼리를 날려주었다.
package db.migration;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;
import java.sql.ResultSet;
import java.sql.Statement;
public class V3__bulk_update_books extends BaseJavaMigration {
@Override
public void migrate(Context context) throws Exception {
try (Statement select = context.getConnection().createStatement()) {
try (ResultSet rows = select.executeQuery("SELECT id FROM books ORDER BY id")) {
while (rows.next()) {
int id = rows.getInt(1);
String nameToChange = "LHWN2";
try (Statement update = context.getConnection().createStatement()) {
update.execute("UPDATE books SET name='" + nameToChange + "'WHERE id=" + id);
}
}
}
}
}
}
출처 : https://fastcampus.co.kr/courses/204729/clips/
패스트캠퍼스 온라인 강의 - 스프링 아카데미아 15개 영상강의 코스(5월)
fastcampus.co.kr