Home » Scala » ScalikeJDBC – Phần 1

ScalikeJDBC – Phần 1

1. Giới thiệu


Như chúng ta đã biết, ScalikeJDBC là một thư viện kết nối cơ sở dữ liệu dành cho ngôn ngữ lập trình Scala. Đây là bộ thư viện tiện dụng, có nhiều tính năng như JDBC API, SQLInterpolation, QueryDSL …. Với mục đích giới thiệu về ScalikeJDBC, xin được viết một số bài tổng hợp những kiến thức thu được trong quá trình tìm hiểu về ScalikeJDBC. Bài mở đầu nói về cách cài đặt ScalikeJDBC với Play2 framework, các phép toán trong ScalikeJDBC, và SQLInterpolation

2. Nội dung


2.1. Cài đặt ScalikeJDBC


Các bước cài đặt chi tiết cho từng trường hợp được tổng hợp tại trang chủ của ScalieJDBC: https://scalikejdbc.org/ . Cụ thể với trường hợp ScalikeJDBC kết hợp với Play2 framework, ta có thể thiết lập plugin ScalikeJDBC như sau
– Thêm ScalikeJDBC vào danh sách dependencies trong file build.sbt, khai báo có dạng


  • Trong file conf/application.conf


  • Sau khi ScalikeJDBC đã sẵn sàng, bước cuối cùng là import scalikejdbc._ tại những nơi cần sử dụng

2.2. Các phép toán trong ScalikeJDBC


Phần sau xin trình bày về các tính năng của ScalikeJDBC thông qua ví dụ áp dụng trên bảng dữ liệu employee(id, name, email)

2.2.1. Phép toán truy vấn (Query)


Các phép toán truy vấn gồm có: single, first, list, foreach
– single()
Truy vấn lấy tên Employee theo id


Trong đó
SQL(“select * from employee where id = {id}”): khai báo lệnh SQL
.bindByName(‘id -> id): truyền giá trị cho tham số trong lệnh SQL thông qua tên
.map { rs => rs.string(“name”) }: xác định giá trị trả về dựa trên kết quả truy vẫn. Ở đây kết quả trả về cần lấy là trường name trong bản employee, có kiểu String
.single(): lấy ra một bản ghi dữ liệu duy nhất và coi đó là giá trị Option. Trong trường hợp câu truy vấn trả về nhiều bản ghi dữ liệu, hàm single() trả lại runtime exception
.apply(): đơn giản là lệnh thực thi
– first()
Hàm first() trả về giá trị đầu tiên trong kết quả của câu truy vấn có nhiều giá trị trả về, giá trị cũng được coi như dưới dạng Option
Lấy ra email của người đầu tiên trong danh sách Employee


  • list()
    Hàm list() đưa các bộ giá trị trả về thành dạng List (immutable)
    Lấy ra danh sách tên của tất cả employee


  • foreach()
    Hàm foreach() thực hiện trên từng dòng dữ liệu của kết quả truy vấn


2.2.2. Phép toán cập nhật (update)


Hàm update() trả về số lượng bản ghi được cập nhật


2.2.3. Phép toán thực thi (execute)


Mục đích sử dụng: thực thi các lệnh có dạng: create, delete …


2.3. SQLInterpolation


SQLInterpolation là phép nội suy được áp dụng từ phiên bản Scala 2.10 trở lên
Cách sử dụng khá đơn giản: Viết các câu truy vấn dưới đạng sql”SQL String”
Ví dụ ta có thể viết lại hàm lấy tên employee theo id như sau


2.3.1. SQLSyntax


Không giống như các biến giá trị được đoán nhận trực tiếp trong truy vấn, SQLSyntax là một phần của truy vấn đó, ví dụ mệnh đề, điều kiện. Để tạo SQLSyntax ta dùng cấu trúc sqls”String”. Trong SQLSyntax, các biến vẫn được nội suy như với lệnh SQL đầy đủ.
Ví dụ


2.3.2. SQLSyntaxSupport


Ta khai báo thêm lớp Employee và object EmployeeTable như sau


Khi đó, có thể viết hàm lấy employee theo id, kết quả trả về mang kiểu Option[Employee]


3. Kết luận


Bài viết mở đầu về ScalikeJDBC đã đề cập tới cách cài đặt ScalikeJDBC trong Play2 framework, các phép toán, và cách sử dụng SQLInterpolation. Với sự khởi đầu trên, chúng ta sẽ tiếp tục tìm hiểu thêm các tính năng khác của ScalikeJDBC trong các bài viết tiếp theo.

Tham khảo


http://scalikejdbc.org/