Học viên: Nguyễn Đức Thắng
Lớp: Java Fullstack 15
Email: duwcsthang2001@gmail.com
Số điện thoại: 033.265.2238


Khái Quát Chung

Trong Spring Data JPA có một cơ chế giúp chúng ta tạo ra các câu Query mà không cần viết thêm code. Cơ chế này xây dựng Query từ tên của method. Tức là chỉ cần bạn đặt tên theo đúng chuẩn thì nó sẽ tự động sinh ra các câu query tương ứng và trả về kết quả.

Lưu ý : các tên của method này phải đặt tương đương với câu Query tương ứng .

Spring DATA JPA

Quy tắc đặc tên cho Method Query ( Query Creation)

Tiền tố : luôn bắt đầu bằng một động từ + By

Spring Data JPA hỗ trợ tìm (find) , đọc (read) , truy vấn (query) , đếm ( count ) và nhận (get). Chúng ta phải đặt tên theo các từ ngữ trên kết hợp từ khóa By, tùy theo mục đích sử dụng

Ví dụ : findBy, readBy, queryBy, countBy, getBy.

Hậu tố

Phần này chúng ta sẽ đặt tên theo tiêu chí muốn truy vấn. Tiêu chí truy vấn phải là các thuộc tính thuộc Thực Thể (entity) và chứa thêm các biểu thức điều kiện dành riêng cho thực thể của truy vấn. Chúng ta có thể sử dụng các từ khóa điều kiện cùng với tên thuộc tính của thực thể (entity).

  • Chúng ta cũng có thể nối các biểu thức với And , Or và cũng có thể sử dụng Distinct , First hoặc Top để loại bỏ các bản sao hoặc giới hạn kết quả trả về .
  • Một số từ khóa truy vấn được sử dụng trong So Sánh
    • So sánh bằng : đây là câu truy vấn đưa ra kết quả chính xác nhất so với kết quả và cũng được sử dụng nhiều nhất : 2 từ khóa dùng cho truy vấn này là : “Is” or “=”
    • So sánh dựa trên điều kiện : thêm các từ khóa LessThan và LessThanEqual
    • So sánh tương đương : LIKE , Containing , EndingWith , startedWith , Equals
    • So sánh với Null : IsNull, Null , IsNotNull, NotNull
  • Từ khóa truy vấn thuận tiện cho việc sắp xếp thứ tự : ORDER BY + ASC/DESC

Lưu ý : Thực thể (entity) thường là một bảng trong Cơ Sở Dữ Liệu. Trong bảng chứa các thuộc tính và tác dụng để miêu tả về một đối tượng cụ thể nào đó … Ví dụ để mô tả về Con Người chúng ta có một entity Person có các thuộc tính như Tên , Số điện thoại , Năm Sinh , …*

Dưới đây là các Method Query phổ biến được đặt tên theo quy tắc

một số Method Query phổ biến

Cách sử dụng

Bước 1 :

Đầu tiên tạo một entity User với các thuộc tính đơn giản với 4 thuộc tính ID , Name , Email , Password

định nghĩa Entity User

Bước 2

Spring Data đã wrapper lên Hibernate một lớp nữa gọi là Spring JPA. Chúng ta sẽ tương tác với database thông qua Spring JPA. Chúng ta sẽ tạo một UserRepository extends JpaRepository (JpaRepository extends từ một interface chung là Repository.)

Tạo lớp UserRespository

Trong class này chúng ta sẽ định nghĩa các Method Query ở đây. Trong này tôi sẽ viết số Method Query cơ bản

(một số Method Query cơ bản)

Bước 3

Tạo Entity User trong Database của bạn và import dữ liệu để hỗ trợ cho việc truy vấn

Đây là cấu trúc bảng Entity User và dữ liệu chúng ta sẽ truy vấn

Entity User

Bước 4

Thực hiện câu lệnh truy vấn dến Database thông qua các câu lệnh truy vấn ở trên để test câu truy vấn đơn giản , bạn nên sử dụng class Test trong có sẵn trong Spring Boot và thêm 2 annotation để test . Điều này sẽ giúp cho project của bạn chạy nhanh hơn và hạn chế việc khởi tạo Component

2 Annotation để Test Spring Data JPA

Kết quả truy vấn của một số phương thức chúng ta định nghĩa trong lớp UserRepository

Tìm kiếm User theo tên

a

Kết quả trả về

a

Tìm kiếm User theo tên có tiền tố bằng chuỗi truyền vào

a

Kết quả trả về

a

Tổng Kết

Trong bài viết này , chúng ta đã tìm hiểu được khái quát về các Query Creation trong Spring Data JPA cụ thể là quy tắc đặt tên, các sử dụng, … . Với một số câu lệch truy vấn thông thường và cơ bản chúng ta có thể áp dụng các method query này để truy vấn trực tiếp mà ko cần viết code truy vấn cụ thể sẽ tích kiệm được khá nhiều thời gian …

Các Nguồn Tham Khảo: https://www.baeldung.com/spring-data-derived-queries