Spring Data repositories ကို အမျိုးစုံ customize လုပ်ပုံ
ကိုယ့်စိတ်ကြိုက် quries တွေကို Spring Data repositories တွေမှာ ရေးလို့ရပါတယ်။ findBy ဆိုတဲ့ prefix နဲ့ စရမှာဖြစ်ပါတယ်။
ဥပမာ findBy + Brand = findByBrand
ရှေ့က prefix findBy က အသေ ဖြစ်ပြီးနောက်က ကိုယ်ရှာဖို့ ပေးလိုက်ချင်တဲ့ field နာမည်ကိုရေးရမှာပါ။
အောက်မှာ example ပြထားပါတယ်။
import java.util.List; import org.springframework.data.repository.CrudRepository; public interface CarRepository extends CrudRepository<Car, Long> { // Fetch cars by brand List<Car> findByBrand(String brand);
findBy ဆိုတဲ့ keyword နောက်မှာ And နဲ့ Or ဆိုတဲ့ keyword တွေသုံးလို့ရပါသေးတယ်။
ဥပမာ findBy + Brand + And + Model = findByBrandAndModel
findBy+ Brand + Or + Color = findByBrandOrColor
အစရှိသည်ဖြင့်သုံးနိုင် ရေးနိုင်ပါတယ်။
အောက်မှာ example ပြထားပါတယ်။
package com.packt.demo.domain; import java.util.List; import org.springframework.data.repository.CrudRepository; public interface CarRepository extends CrudRepository<Car, Long> { // Fetch cars by brand and model List<Car> findByBrandAndModel(String brand, String model); // Fetch cars by brand or color List<Car> findByBrandOrColor(String brand, String color); }
ဒီထက် advance ဖြစ်တဲ့ keyword နောက် တစ်မျိုးက OrderBy ဆိုတဲ့ keyword ပါ။ ထွက်လာတဲ့ results တွေကို ကြီးရာကနေငယ်ရာ ၊ ငယ်ရာကနေကြီးရာ စီပေးနိုင်ပါတယ်။
အဲဒါကတော့ Asc နဲ့ Desc ဆိုတဲ့ keyword တွေပေါ့။ ဥပမာ findBy+Year+OrderBy+Asc findByYearOrderByAsc ဆိုရင် Year ကိုပေးပြီးရှာမယ်။ ထွက်လာတဲ့ results ကို
ငယ်ရာကနေကြီးရာ စီမယ်ဆိုတဲ့ method ကို create လုပ်နိုင်ပြီပေါ့။
package com.packt.demo.domain; import java.util.List; import org.springframework.data.repository.CrudRepository; public interface CarRepository extends CrudRepository<Car, Long> { // Fetch cars by brand and sort by year List<Car> findByBrandOrderByYearAsc(String brand); }
နောက်ဆုံးတစ်ခုကတော့ method name အစား ကိုယ်ရေးချင်တဲ့ query ကို SQL လိုမျိုး ဟာနဲ့ ဆွဲထုတ်ပြီးရေးတာဖြစ်ပါတယ်။ အောက်မှာ example ကို ပြထားပါတယ်။ ?1 ဆိုတာ positional parameter ပါ။ ဒီနေရာမှာ brand ပေါ့
package com.packt.demo.domain; import java.util.List; import org.springframework.data.repository.CrudRepository; public interface CarRepository extends CrudRepository<Car, Long> { // Fetch cars by brand using SQL @Query("select c from Car c where c.brand like %?1") List<Car> findByBrandEndsWith(String brand); }
Pagination အတွက်ကတော့ PagingAndSortingRepository ဆိုတဲ့ feature ကို CrudRepository အပြင်သုံးနိုင်ပါတယ်။ ဆွဲထုတ်မယ့် Data တွေ အရမ်းများရင် serverside pagination ဟာ
အင်မတန်အသုံးဝင်ပါတယ်။ PagingAndSortingRepository ဟာ results တွေကို page အလိုက်ထုတ်ပေးဖို့နဲ့ sort လုပ်ပေးတဲ့နေရာမှာ အသုံးဝင်ပါတယ်။ PagingAndSortingRepository ကို
ဆောက်တာ CrudRepository ကို ဆောက်တာနဲ့ ပုံစံတူတူပါပဲ။
ဒါဆိုရင် အောက်ပါ method တွေကို စသုံးနိုင်ပြီဖြစ်ပါတယ်။
Method | Description |
---|---|
Iterable<T> findAll(Sort sort) | ပေးလိုက်တဲ့ sort option အတိုင်း item တွေကိုထုတ်ယူဖို့ |
Page<T> findAll(Pageable | |
pageable) | ပေးလိုက်တဲ့ paging option အတိုင်း item တွေကို ထုတ်ယူဖို့ |
Top comments (0)