當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Data JPA 从入门到精通~Specification工作中的一些扩展
生活随笔
收集整理的這篇文章主要介紹了
Spring Data JPA 从入门到精通~Specification工作中的一些扩展
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Specification 工作中的一些擴展
我們在實際工作中會發現,如果上面的邏輯,簡單重復寫總感覺是不是可以抽出一些公用方法呢,此時引入一種工廠模式,幫我們做一些事情,可以讓代碼更加優雅。基于 JpaSpecificationExecutor 的思路,我們創建一個 SpecificationFactory.Java 內容如下:
public final class SpecificationFactory {/*** 模糊查詢,匹配對應字段*/public static Specification containsLike(String attribute, String value) {return (root, query, cb)-> cb.like(root.get(attribute), "%" + value + "%");}/*** 某字段的值等于 value 的查詢條件*/public static Specification equal(String attribute, Object value) {return (root, query, cb) -> cb.equal(root.get(attribute),value);}/*** 獲取對應屬性的值所在區間*/public static Specification isBetween(String attribute, int min, int max) {return (root, query, cb) -> cb.between(root.get(attribute), min, max);}public static Specification isBetween(String attribute, double min, double max) {return (root, query, cb) -> cb.between(root.get(attribute), min, max);}public static Specification isBetween(String attribute, Date min, Date max) {return (root, query, cb) -> cb.between(root.get(attribute), min, max);}/*** 通過屬性名和集合實現 in 查詢*/public static Specification in(String attribute, Collection c) {return (root, query, cb) ->root.get(attribute).in(c);}/*** 通過屬性名構建大于等于 Value 的查詢條件*/public static Specification greaterThan(String attribute, BigDecimal value) {return (root, query, cb) ->cb.greaterThan(root.get(attribute),value);}public static Specification greaterThan(String attribute, Long value) {return (root, query, cb) ->cb.greaterThan(root.get(attribute),value);} ...... }PS:可以根據實際工作需要和場景進行不斷擴充。
調用實例1:
userRepository.findAll(SpecificationFactory.containsLike("firstName", userParam.getLastName()),pageable);是不是發現代碼一下子少了很多?
配合 Specifications 使用,調用實例2:
userRepository.findAll(Specifications.where(SpecificationFactory.containsLike("firstName", userParam.getLastName())).and(SpecificationFactory.greaterThan("version",userParam.getVersion())),pageable);和我們前面舉的例子比起來是不是代碼更加優雅、可讀性更加強了?
總結
以上是生活随笔為你收集整理的Spring Data JPA 从入门到精通~Specification工作中的一些扩展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BigDecimal总结
- 下一篇: Jackson第二篇【从JSON字符串中