Cách kết nối Database và evolution trong Play FrameWork Scala
Mở đầu
Hôm nay chúng ta sẽ cùng cách tạo và tìm hiểu những thứ có trong 1 project MVC sử dụng Play Framework trên IntelliJ nhé. Không nói nhiều nữa bắt đầu luôn nào.
Tạo và tìm hiểu cấu trúc thư mục của 1 project
Đầu tiên, chọn Create new Project -> Scala -> Play 2.x -> Next
Config các thông tin của project về: Name, Location, SDK, Scala Version, Play 2 version như bên dưới, sau đó click Finish
Intellij sẽ tạo cho chúng ta 1 Project có cấu trúc thư mục như sau:
Trong đó:
– /build.sbt: Đây là file chứa toàn bộ các Dependencies, Setting của dự án
– /conf/application.conf: File này sẽ chứa các thông tin của akka, evolutions, database…
– /conf.routes: Define tất cả các URI của hệ thống và match chúng vào với các action tương ứng.
– /plugins.sbt: Khai báo các plugins cần dùng cho project như: scalariform, scalastyle…
– /app: Thư mục này chứa các files về controllers, service, views…
Để run project ta có thể Run trực tiếp trên Intellij hoặc run command “sbt run“. Sau đó, truy cập http://localhost:9000/ để vào giao xem giao diện default
Kết nối với Database
Đầu tiên, trong file build.sbt cần khai báo các dependencies để kết nối DB. Hãy chú ý chọn version cho phù hợp với MySQL của bạn.
libraryDependencies ++= Seq(jdbc, "mysql" % "mysql-connector-java" % "8.0.17" )
Tiếp theo sẽ khai báo các thông tin kết nối đến DB trong file /conf/application.conf. Ở đây tôi kết nối đến server MySQL:
- DB name là: BBS
- username: septech
- password: UserManagement@123
db { default { driver=com.mysql.jdbc.Driver url="jdbc:mysql://localhost:3306/BBS?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT" username=septech password="UserManagement@123" } }
Để kiểm tra đã kết nối được DB chưa ta run lại Project và truy cập vào http://localhost:9000. Nếu thấy log console như bên dưới có nghĩa là đã thành chính quả.
[info] p.a.d.DefaultDBApi - Database [default] initialized at jdbc:mysql://localhost:3306/BBS_TTT?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
Tạo database với Evolution
Khai báo dependency trong file build.sbt
libraryDependencies += evolutions
Bây giờ cần tạo các file .sql để chạy trong thư mục /conf/evolutions/default như hình dưới.
Chú ý: Các file .sql nên đặt tên là 1.sql, 2.sql… Khi cần thêm bảng hoặc thay đổi cấu trúc table thì sẽ tạo các file có number cao hơn và nội dung của nó gồm 2 phần UP để tạo và DOWN để revert.
Ví dụ: file 1.sql
# --- !Ups CREATE TABLE users ( id BIGINT(20) NOT NULL AUTO_INCREMENT, user_name VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL, password VARCHAR(100) NOT NULL, created_at DATETIME NOT NULL, modified_at DATETIME NOT NULL, PRIMARY KEY (id)); # --- !Downs DROP TABLE users;
Cuối cùng, ta config trong file /conf/application.conf thông tin để evoluation có thể tự động apply scripts khi run program
play.evolutions { autoApply=true }
Bây giờ các bạn hãy run lại project và check DB sẽ thấy table users đã được tạo ra tự động.
Kết luận
Như vậy, mình đã trình bày về cách build 1 simple project bằng Intellij, kết nối với Database MySQL và có sử dụng evolution. Nếu quan tâm các bạn có thể xem bài tiếp về tái cấu trúc lại project ở phần sau nhé.
Tài liệu tham khảo:
https://www.playframework.com/documentation/2.7.x/Evolutions
https://hoaipt.blogspot.com/2016/05/play-framework-day-3-ket-noi-mysql-db-va-evolution.html