最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Data JPA分頁(yè)復(fù)合查詢?cè)斫馕?/h1>
 更新時(shí)間:2019年11月20日 09:47:12   作者:lannoy  
這篇文章主要介紹了Spring Data JPA分頁(yè)復(fù)合查詢?cè)斫馕?文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

Spring Data JPA是Spring Data家族的一部分,可以輕松實(shí)現(xiàn)基于JPA的存儲(chǔ)庫(kù)。 此模塊處理對(duì)基于JPA的數(shù)據(jù)訪問(wèn)層的增強(qiáng)支持。 它使構(gòu)建使用數(shù)據(jù)訪問(wèn)技術(shù)的Spring驅(qū)動(dòng)應(yīng)用程序變得更加容易。

在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi),實(shí)現(xiàn)應(yīng)用程序的數(shù)據(jù)訪問(wèn)層一直很麻煩。 必須編寫太多樣板代碼來(lái)執(zhí)行簡(jiǎn)單查詢以及執(zhí)行分頁(yè)和審計(jì)。 Spring Data JPA旨在通過(guò)減少實(shí)際需要的工作量來(lái)顯著改善數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn)。

作為開(kāi)發(fā)人員,您編寫repository接口,包括自定義查找器方法,Spring將自動(dòng)提供實(shí)現(xiàn)。例如,你繼承JpaRepository<實(shí)體類,主鍵類型>,他會(huì)提供很方便的查詢方法,運(yùn)用findby+字段,完全不需要開(kāi)發(fā)人員寫sql就可以查詢你需要的。

至于findby的用法可以百度,可以拼接很多關(guān)鍵字來(lái)擴(kuò)展。這個(gè)是一般情況,但是實(shí)際中可能用的地方就不會(huì)這么簡(jiǎn)單了,我們來(lái)具體說(shuō)說(shuō)或者說(shuō)舉例來(lái)說(shuō)明吧。

一般:就像上面說(shuō)的,優(yōu)秀。

分頁(yè):分頁(yè)其實(shí)說(shuō)白了就是2個(gè)查詢。我們通過(guò)使用標(biāo)簽@query內(nèi)含原生態(tài)nativeQuery=ture來(lái)手動(dòng)編寫,列表sql運(yùn)用value,數(shù)量sql用countQuery,返回page屬性。但是注意@query的時(shí)候有講究,當(dāng)遇到不同數(shù)據(jù)庫(kù)的后面需要拼接的東西不一樣。比如orcale是?#{#pageable},mysql是 \n#pageable\n ,sqlsever是 \n-- #pageable\n 。

例:

@Query(value="select * from C_Article where type=:type \n--#pageable\n",countQuery="select count(*) from C_Article where type=:type",nativeQuery=true)

Page<C_Article> findByType(@Param("type") String type,Pageable pageable);

所以總結(jié)來(lái)說(shuō)還是比較蛋疼,而且還沒(méi)說(shuō)其他復(fù)合情況。

復(fù)合查詢:一般的復(fù)合我們可以用原生態(tài)的sql解決,即nativeQuery=ture。當(dāng)遇到條件拼接查詢的時(shí)候我第一次就傻掉了。查了好久,沒(méi)找到感覺(jué)舒適的。他需要我們實(shí)現(xiàn)JpaRepository<實(shí)體類,主鍵類型>和JpaSpecificationExecutor<實(shí)體類>,實(shí)體類還得寫個(gè)原型類。service實(shí)現(xiàn)類里面的方法通過(guò)findAll((root, criteriaQuery, criteriaBuilder)來(lái)構(gòu)造sql。

例:實(shí)體類

@Entity
@Data/**這個(gè)是lombok標(biāo)簽**/
@Table(name="news")
public class News implements Serializable{
  @Id
  private String Id;

  private String Type;

  private String Title;

  private String Creater;
}

模型類

@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(News.class)
public class News_ {
  public static volatile SingularAttribute<News, String> Id; 
  public static volatile SingularAttribute<News, String> Type; 
  public static volatile SingularAttribute<News, String> Title;
  public static volatile SingularAttribute<News, String> Creater; 
}

service類就不傳了??聪聅erviceImp這個(gè)里面的方法,這個(gè)是蛋疼的地方

public List<News> newsList(String type, String creater) {
  return (這個(gè)是你注入的repository)repository.findAll((root, criteriaQuery, criteriaBuilder) -> {
      List<Predicate> predicatesList = new ArrayList<>();
      if (creater!="" ) {
        predicatesList.add(
            criteriaBuilder.and(
                criteriaBuilder.like(
                    root.get(News_.Creater), "%" + creater+ "%")));
      }    
      if (type!="") {
        predicatesList.add(
            criteriaBuilder.and(
                criteriaBuilder.like(
                    root.get(News_.Type), "%"+type+"%")));
      }
      return criteriaBuilder.and(
          predicatesList.toArray(new Predicate[predicatesList.size()]));
    });
  }

DAO類

public interface NewsRepository extends JpaRepository<News, String>,JpaSpecificationExecutor<News>{
 List<News> <em id="__mceDel">newsList(String type,String create)</em>
}

criteriaBuilder這個(gè)包含不止like,還有其他的我就不一一列舉了,具體還有啥建議點(diǎn)進(jìn)去看源碼。但是這樣一看是不是很麻煩。所以實(shí)際運(yùn)用上還是不建議使用。

  總結(jié)一句話,還是老老實(shí)實(shí)用mybatis就好了,mybatis-plus搭配起來(lái)就可以寫的很舒暢了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java HttpClient執(zhí)行請(qǐng)求時(shí)配置cookie流程詳細(xì)講解

    Java HttpClient執(zhí)行請(qǐng)求時(shí)配置cookie流程詳細(xì)講解

    這篇文章主要介紹了Java HttpClient執(zhí)行請(qǐng)求時(shí)配置cookie流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • Java面向?qū)ο蠡A(chǔ)知識(shí)之委托和lambda

    Java面向?qū)ο蠡A(chǔ)知識(shí)之委托和lambda

    這篇文章主要介紹了Java面向?qū)ο蟮闹泻?lambda,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-11-11
  • JPA配置方式+逆向工程映射到Entity實(shí)體類

    JPA配置方式+逆向工程映射到Entity實(shí)體類

    這篇文章主要介紹了JPA配置方式+逆向工程映射到Entity實(shí)體類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的解決方案

    Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的解決方案

    Spring?Cloud?Alibaba?致力于提供微服務(wù)開(kāi)發(fā)的一站式解決方案,此項(xiàng)目包含開(kāi)發(fā)分布式應(yīng)用微服務(wù)的必需組件,這篇文章主要介紹了Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡,需要的朋友可以參考下
    2024-05-05
  • Java基礎(chǔ)之內(nèi)存泄漏與溢出詳解

    Java基礎(chǔ)之內(nèi)存泄漏與溢出詳解

    今天帶大家來(lái)了解一下Java內(nèi)存泄漏與溢出的知識(shí),文中有非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)Java基礎(chǔ)的各位小伙伴呢很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • 關(guān)于spring.factories失效原因分析及解決

    關(guān)于spring.factories失效原因分析及解決

    這篇文章主要介紹了關(guān)于spring.factories失效原因分析及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 基于IDEA建立module操作步驟解析

    基于IDEA建立module操作步驟解析

    這篇文章主要介紹了基于IDEA建立module操作步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java中Steam流的用法詳解

    Java中Steam流的用法詳解

    Stream是Java?8?API添加的一個(gè)新的抽象,稱為流Stream,本文主要介紹了Java中Steam流的用法詳解,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-04-04
  • Java整合mybatis實(shí)現(xiàn)過(guò)濾數(shù)據(jù)

    Java整合mybatis實(shí)現(xiàn)過(guò)濾數(shù)據(jù)

    這篇文章主要介紹了Java整合mybatis實(shí)現(xiàn)過(guò)濾數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • 解析Flink內(nèi)核原理與實(shí)現(xiàn)核心抽象

    解析Flink內(nèi)核原理與實(shí)現(xiàn)核心抽象

    Flink API提供了開(kāi)發(fā)的接口,此外,為了實(shí)現(xiàn)業(yè)務(wù)邏輯,還必須為開(kāi)發(fā)者提供自定義業(yè)務(wù)邏輯的能力,下面為大家解析Flink內(nèi)核原理與實(shí)現(xiàn)核心抽象
    2021-08-08

最新評(píng)論

石家庄市| 吕梁市| 鄂伦春自治旗| 读书| 阿拉善盟| 巴林左旗| 屏山县| 大渡口区| 横峰县| 广德县| 韩城市| 碌曲县| 融水| 沧源| 光泽县| 浮梁县| 邯郸县| 泗阳县| 高邮市| 黄骅市| SHOW| 乾安县| 成武县| 旺苍县| 深州市| 河东区| 崇文区| 肥乡县| 铅山县| 尼勒克县| 南召县| 紫阳县| 河津市| 张北县| 股票| 渝中区| 丹江口市| 江安县| 札达县| 南投县| 德钦县|