[Play Framework] - Day 4 : Sử dụng ScalikeJDBC trong PlayFramework

Phần trước chúng đã có thể kết nối và khởi đạo database, phần này ta sẽ cùng xem làm sao để thao tác với nó bằng ScalikeJDBC.

ScalikeJDBC là gì ?

Đây là thư viện library sử dụng JDBC API và cung cấp cho chúng ra 1 cách sử dụng mới, linh hoạt với API.
Bạn có thể tìm hiểu thêm ở : http://scalikejdbc.org/

Làm sao để sử dụng

Đầu tiên ta cần kết nối tới database trước.

Bạn có thể làm theo hướng dẫn của phần trước : Kết nối mysql DB và tạo DB evolution

Tiếp đến bạn cần enable scalikejdbc plug-in

*) setup này dành cho play 2.4 và cao hơn, ở bài này tôi dùng 2.5.4, nếu bạn dùng play version thấp hơn có thể làm theo hướng dẫn ở đây : scalikeJDBC on Play .
Thêm scalikejdbc vào : build.sbt
libraryDependencies ++= Seq(
  "org.scalikejdbc" %% "scalikejdbc" % "2.4.1",
  "org.scalikejdbc" %% "scalikejdbc-config" % "2.4.1",
  "org.scalikejdbc" %% "scalikejdbc-play-initializer" % "2.5.1")
*) Vì tiếp tục phần trước nên mặc định ta đã có driver cho mysql, nếu bạn bắt đầu từ đây bạn cần thêm driver của database vào.
Bạn cần thư viện này nếu muốn test với scalikeJDBC
libraryDependencies ++= Seq(
  "org.scalikejdbc" %% "scalikejdbc-test" % "2.2.8" % "test"
)
Vậy là xong những thư viện cần thiết,giờ là bật scalikejdbc.PlayModule lên trong conf/application.conf
play.modules.enabled += "scalikejdbc.PlayModule"
Bạn cần import scalikejdbc vào space cần run query :
import scalikejdbc._
Trong action bạn cần run query với scalikejdbc, bạn phải implicit session.
def your_action()(implicit session: DBSession = AutoSession) = Action {}
Stock Photos

Chạy như nào

Đầu tiên bạn cần 1 query string, ta sẽ tiếp tục phần trước và lấy ra user từ bảng "users" :
select * from users
Bạn có thể dùng cấu trúc này để run query trên với scalikejdbc
val runSelectQuery : Option[String] = SQL("select * from users limit 1")
.map { rs => rs.string("email") }
.single().apply()
  1. SQL("select * from users limit 1") : trả về 1 query từ string của bạn. 
  2. map { rs => rs.string("email") } : với câu query là select bạn cần define output.
  3. single() : format cho output ,single() trả về Option,cụ thể ở đây nó trả về Option[String].
  4. apply() : là . . . apply, bạn cần nó để kết thúc câu query của bạn.
Nếu câu query có điều kiện thì sao : bindByName('name -> value)
Giả xử, giờ tôi cần lấy ra user có email là "hoai@pt.com" , câu query sẽ là :
val emailAddress = "hoai@pt.com"

val runSelectQuery : Option[String] = SQL("select * from users where email = {email} limit 1")
  .bindByName('email -> emailAddress)
  .map { rs => rs.string("email") }
  .single().apply()
Cách khác để build 1 query từ string query : sql"your_query_here"
Ta viết lại câu query phía trên :
val emailAddress = "hoai@pt.com"

val runSelectQuery : Option[String] = sql"select * from users where email = ${emailAddress} limit 1"
  .map { rs => rs.string("email") }
  .single().apply()
Bạn thấy sự khác biệt không, với cách này chúng ta không cần bindByName.

Video

Trong video chữ có bị nhảy vài chỗ do Mac nó vậy, các bạn thông cảm.

Comments

  1. Nội dung bài viết thật tuyệt vời. Mình cũng muốn giới thiệu về một Công ty dịch thuật uy tín - Công ty dịch thuật miền trung - MIDtrans trụ sở chính chính tại địa chỉ 02 Hoàng Diệu, TP Đồng Hới, tỉnh Quảng Bình có Giấy phép kinh doanh số 3101023866 cấp ngày 9/12/2016 là đơn vị chuyên cung cấp dịch vụ dịch thuật, phiên dịch dành các cá nhân. Hệ thống thương hiệu và các Công ty dịch thuật con trực thuộc: dịch thuật bình dương - dịch thuật miền trung tại địa 123 Lê Trọng Tấn, Dĩ An, Bình Dương là địa chỉ chuyên cung cấp dịch vụ dịch thuật chuyên nghiệp tại Bình Dương và các khu vực lân cận ; dịch thuật hồ sơ thầu tại sài gòn địa chỉ 47 Điện Biên Phủ, Phường Đakao, Quận 1 TP HCM, dịch thuật đà lạt, lâm đồng : địa 101 Trần Hưng Đạo, TP Đà lạt là nhà cung ứng dịch vụ dịch thuật uy tín hàng đầu tại Lâm Đồng; Công ty dịch thuật Viettrans và dịc vụ binh phuoc translation: dịch vụ dịch thuật tại Bình Phước cho người nước ngoài có nhu cầu, giao diện tiếng Anh dễ sử dụng; dịch thuật tiếng hà lan tại sài gòn: nhà cung ứng dịch vụ dịch vụ dịch thuật phiên dịch hàng đầu tại TP Hồ Chí Minh; dịch thuật tiếng trung hoa tại Đà Nẵng : Địa chỉ 54 Đinh Tiên Hoàng, Quận Hải Châu, TP Đà Nẵng chuyên cung cấp dịch vụ dịch thuật công chứng, dịch thuật đa ngôn ngữ, đa chuyên ngành tại Đà Nẵng; Viettrans 43 Điện Biên Phủ, Quận 1 Sài Gòn: chuyên cung cấp dịch vụ dịch thuật đa chuyên ngành toàn quốc; Công ty dịch thuật Hà Nội MIDtrans chuyên cung cấp dịch vụ dịch thuật tại bà rịa, vũng tàu : địa chỉ 55 Lê Thánh Tông, TP Bà Rịa là nhà cung ứng dịch vụ biên dịch, phiên dịch chuyên nghiệp tại địa bàn Vũng Tàu. Ngoài ra, Chúng tôi cũng cung cấp các dịch vụ biên dịch và phiên dịch, dịch thuật công chứng chất lượng cao hơn 50 ngôn ngữ khác nhau như tiếng Anh, Nhật, Hàn, Trung, Pháp, Đức, Nga, .vv... Dịch thuật MIDtrans tự hào với đội ngũ lãnh đạo với niềm đam mê, khát khao vươn tầm cao trong lĩnh vực dịch thuật, đội ngũ nhân sự cống hiến và luôn sẵn sàng cháy hết mình. Chúng tôi phục vụ từ sự tậm tâm và cố gắng từ trái tim những người dịch giả.Tự hào là công ty cung cấp dịch thuật chuyên ngành hàng đầu với các đối tác lớn tại Việt nam trong các chuyên ngành hẹp như: vietnamese tourist tại 46 Trần Cao Vân, TP Huế chuyên trang về thông tin du lịch và các tour đặc sắc tại Việt Nam, y dược (bao gồm bệnh lý), xây dựng (kiến trúc), hóa chất, thủy nhiệt điện, ngân hàng, tài chính, kế toán. Các dự án đã triển khai của Công ty dịch thuật chuyên nghiệp MIDtrans đều được Khách hàng đánh giá cao và đạt được sự tín nhiệm về chất lượng biên phiên dịch. Đó là kết quả của một hệ thống quản lý chất lượng dịch thuật chuyên nghiệp, những tâm huyết và kinh nghiệm biên phiên dịch nhiều năm của đội ngũ dịch giả của chúng tôi. Hotline: 0947688883. email: info@dichthuatmientrung.com.vn . Các bạn ghé thăm site ủng hộ nhé.

    ReplyDelete

Post a Comment