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

SpringBoot JPA 表關(guān)聯(lián)查詢實(shí)例

 更新時(shí)間:2017年04月08日 14:33:18   作者:漫步于成神之路男人  
本篇文章主要介紹了SpringBoot JPA 表關(guān)聯(lián)查詢實(shí)例,使用JPA原生的findBy語句實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解一下。

今天給大家介紹一下如何利用JPA實(shí)現(xiàn)表關(guān)聯(lián)查詢。

今天給大家舉一個(gè)一對多的關(guān)聯(lián)查詢,并且是使用JPA原生的findBy語句實(shí)現(xiàn)的。

例子中總共有兩個(gè)實(shí)體類,一個(gè)是Floor(商品樓層類),另一個(gè)是FloorContent(商品樓層內(nèi)容表)。下面看兩張表的源代碼:

Floor類:

package cms.model; 
import cms.model.base.BaseDomain; 
import org.hibernate.annotations.GenericGenerator; 
 
import javax.persistence.*; 
import java.io.Serializable; 
import java.util.List; 
/** 
 * Created by Roney on 2016/10/10. 
 * 樓層管理 
 * 
 */ 
@Entity 
@Table(indexes = {@Index(name = "idx_floor_user",columnList = "user_id")}) 
public class Floor extends BaseDomain implements Serializable { 
 
  @Id 
  @GenericGenerator(name = "PKUUID", strategy = "uuid2") 
  @GeneratedValue(generator = "PKUUID") 
  @Column(length = 36) 
  protected String id; 
 
  /** 
   * 發(fā)布用戶ID 
   */ 
  @Column(length = 36,name = "user_id") 
  private String userId; 
 
  /** 
   * 樓層名稱 
   */ 
  private String name; 
 
  /** 
   * 樓層的模板路徑 
   */ 
  private String templateUrl; 
 
  /** 
   * 類型 
   * 1.管理端 
   * 2.供應(yīng)商 
   */ 
  private Integer type; 
 
 
  /** 
   * 排序 
   */ 
  @Column(name = "show_index", nullable = false) 
  private Integer showIndex; 
 
  /** 
   * 是否禁用 
   * */ 
 
 
  @Column(nullable = false) 
  private Boolean isDisable=false; 
 
  @OneToMany(fetch = FetchType.LAZY,mappedBy = "floor") 
  private List<FloorContent> floorContents; 
 
  public List<FloorContent> getFloorContents() { 
    return floorContents; 
  } 
 
  public void setFloorContents(List<FloorContent> floorContents) { 
    this.floorContents = floorContents; 
  } 
 
  public String getId() { 
    return id; 
  } 
 
  public void setId(String id) { 
    this.id = id; 
  } 
 
  public String getUserId() { 
    return userId; 
  } 
 
  public void setUserId(String userId) { 
    this.userId = userId; 
  } 
 
  public String getName() { 
    return name; 
  } 
 
  public void setName(String name) { 
    this.name = name; 
  } 
 
  public String getTemplateUrl() { 
    return templateUrl; 
  } 
 
  public void setTemplateUrl(String templateUrl) { 
    this.templateUrl = templateUrl; 
  } 
 
  public Integer getShowIndex() { 
    return showIndex; 
  } 
 
  public void setShowIndex(Integer showIndex) { 
    this.showIndex = showIndex; 
  } 
 
  public Boolean getDisable() { 
    return isDisable; 
  } 
 
  public void setDisable(Boolean disable) { 
    isDisable = disable; 
  } 
 
  @Override 
  public boolean equals(Object o) { 
    if (this == o) return true; 
    if (o == null || getClass() != o.getClass()) return false; 
 
    Floor floor = (Floor) o; 
 
    return id != null ? id.equals(floor.id) : floor.id == null; 
 
  } 
 
  @Override 
  public int hashCode() { 
    return id != null ? id.hashCode() : 0; 
  } 
} 

FloorContent類:

package cms.model; 
 
import cms.model.base.BaseDomain; 
import org.hibernate.annotations.GenericGenerator; 
 
import javax.persistence.*; 
import java.io.Serializable; 
 
/** 
 * Created by Roney on 2016/10/10. 
 * 樓層的內(nèi)容 
 */ 
 
@Entity 
@Table(indexes = {@Index(name = "idx_floor_content_user", columnList = "user_id")}) 
public class FloorContent extends BaseDomain implements Serializable { 
 
  @Id 
  @GenericGenerator(name = "PKUUID", strategy = "uuid2") 
  @GeneratedValue(generator = "PKUUID") 
  @Column(length = 36) 
  protected String id; 
 
  /** 
   * 發(fā)布用戶ID 
   */ 
  @Column(length = 36, name = "user_id") 
  private String userId; 
 
  /** 
   * 內(nèi)容名稱 
   */ 
  private String name; 
 
  /** 
   * 
   * 內(nèi)容圖片 
   */ 
  @Column(length = 256) 
  private String contentImageUrl; 
 
  /** 
   * 類型 
   * 1.超鏈接 
   * 2.圖片檢索 
   */ 
  private Integer type; 
 
  /** 
   * 超鏈接url 
   */ 
  private String linkUrl; 
 
  /** 
   * 圖片檢索內(nèi)容 
   */ 
  private String picSearchContent; 
 
  /** 
   * 排序 
   */ 
  @Column(name = "show_index", nullable = false) 
  private Integer showIndex; 
 
  /** 
   * 是否禁用 
   */ 
 
  @Column(nullable = false) 
  private Boolean isDisable = false; 
 
  @ManyToOne 
  @JoinColumn(name = "floor_id",foreignKey = @ForeignKey(name = "fk_floor_fc")) 
  private Floor floor; 
 
  public Floor getFloor() { 
    return floor; 
  } 
 
  public void setFloor(Floor floor) { 
    this.floor = floor; 
  } 
 
  public String getId() { 
    return id; 
  } 
 
  public void setId(String id) { 
    this.id = id; 
  } 
 
  public String getUserId() { 
    return userId; 
  } 
 
  public void setUserId(String userId) { 
    this.userId = userId; 
  } 
 
  public String getName() { 
    return name; 
  } 
 
  public void setName(String name) { 
    this.name = name; 
  } 
 
  public String getContentImageUrl() { 
    return contentImageUrl; 
  } 
 
  public void setContentImageUrl(String contentImageUrl) { 
    this.contentImageUrl = contentImageUrl; 
  } 
 
  public Integer getType() { 
    return type; 
  } 
 
  public void setType(Integer type) { 
    this.type = type; 
  } 
 
  public String getLinkUrl() { 
    return linkUrl; 
  } 
 
  public void setLinkUrl(String linkUrl) { 
    this.linkUrl = linkUrl; 
  } 
 
  public String getPicSearchContent() { 
    return picSearchContent; 
  } 
 
  public void setPicSearchContent(String picSearchContent) { 
    this.picSearchContent = picSearchContent; 
  } 
 
  public Integer getShowIndex() { 
    return showIndex; 
  } 
 
  public void setShowIndex(Integer showIndex) { 
    this.showIndex = showIndex; 
  } 
 
  public Boolean getDisable() { 
    return isDisable; 
  } 
 
  public void setDisable(Boolean disable) { 
    isDisable = disable; 
  } 
 
  @Override 
  public boolean equals(Object o) { 
    if (this == o) return true; 
    if (o == null || getClass() != o.getClass()) return false; 
 
    FloorContent that = (FloorContent) o; 
 
    return id != null ? id.equals(that.id) : that.id == null; 
 
  } 
 
  @Override 
  public int hashCode() { 
    return id != null ? id.hashCode() : 0; 
  } 
} 

實(shí)體類已經(jīng)出來了,現(xiàn)在具體說說怎么利用JPA中findBy來實(shí)現(xiàn)關(guān)聯(lián)查詢:

package cms.model.repository; 
import cms.model.Floor; 
import cms.model.FloorContent; 
import org.springframework.data.domain.Page; 
import org.springframework.data.domain.Pageable; 
import org.springframework.data.jpa.repository.JpaRepository; 
/** 
 * Created by Roney on 2016/10/10. 
 * Created by Roney on 2016/10/10. 
 * 樓層內(nèi)容管理dao類 
 */ 
public interface FloorContentRepos extends JpaRepository<FloorContent,String>{ 
  public Page<FloorContent> findByFloor_IdAndIsDeleteOrderByShowIndexAsc(String floorId,boolean b, Pageable pageable); 
} 

從例子中就可以看出JPA關(guān)聯(lián)查詢主要在“_”這個(gè)符號的使用,下面來給大家具體的介紹一下這個(gè)符號到底代表什么含義。

首先findBy是必須寫的,表示使用JPA規(guī)則進(jìn)行查詢。

如果查詢的是本張表中的內(nèi)容,例如查詢本張表中的name字段就可以這么寫:findByName()。

如果查詢的是樓層中的name字段就可以這么寫:findByFloor_Name()。

如果是既要查詢本張表中的name字段,也要查詢樓層中的name字段,就可以這么寫:findByFloor_NameAndName()。

從上面的案例就可以看出可以在findBy后面添加要關(guān)聯(lián)的實(shí)體類,然后在實(shí)體類后面寫上“_”,"_"符號后面是添加關(guān)聯(lián)表的字段而不是本身表的字段,這點(diǎn)要記住。如何還想關(guān)聯(lián)更多的表可以在后面添加:And+表名字+“_”+表中要查詢的字段?;蛘咧皇窍腙P(guān)聯(lián)本身的查詢字段可以在后面添加:And+查詢的字段。

千萬不要寫錯(cuò)了,寫錯(cuò)的話運(yùn)行都運(yùn)行不起來的。所以寫的時(shí)候要多看看是否符合規(guī)則。

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

相關(guān)文章

  • JetCache?緩存框架的使用及源碼解析(推薦)

    JetCache?緩存框架的使用及源碼解析(推薦)

    JetCache是一個(gè)基于Java的緩存系統(tǒng)封裝,提供統(tǒng)一的API和注解來簡化緩存的使用。本文重點(diǎn)給大家介紹JetCache?緩存框架的使用及源碼分析,感興趣的朋友一起看看吧
    2022-01-01
  • Java中操作Word修訂功能的示例詳解

    Java中操作Word修訂功能的示例詳解

    Word的修訂功能是一種在文檔中進(jìn)行編輯和審閱的功能,它允許多個(gè)用戶對同一文檔進(jìn)行修改并跟蹤這些修改,以便進(jìn)行審查和接受或拒絕修改,下面我們就來學(xué)習(xí)一下Java中操作Word修訂功能的方法,需要的可以參考下
    2023-12-12
  • Java Socket通信之聊天室功能

    Java Socket通信之聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Java Socket通信之聊天室功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java Comparable和Comparator對比詳解

    Java Comparable和Comparator對比詳解

    這篇文章主要介紹了Java Comparable和Comparator對比詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java命令行參數(shù)解析工具jcommander詳解

    Java命令行參數(shù)解析工具jcommander詳解

    這篇文章主要為大家介紹了Java命令行參數(shù)解析工具jcommander命令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java swing五子棋的實(shí)現(xiàn)方法

    Java swing五子棋的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Java swing五子棋的實(shí)現(xiàn)方法,Java開發(fā)圖形界面程序五子棋的實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java用Arrays.asList初始化ArrayList實(shí)例方法

    Java用Arrays.asList初始化ArrayList實(shí)例方法

    在本篇文章里小編給大家分享的是關(guān)于Java中使用Arrays.asList初始化ArrayList的知識點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-10-10
  • java獲取新insert數(shù)據(jù)自增id的實(shí)現(xiàn)方法

    java獲取新insert數(shù)據(jù)自增id的實(shí)現(xiàn)方法

    這篇文章主要介紹了java獲取新insert數(shù)據(jù)自增id的實(shí)現(xiàn)方法,在具體生成id的時(shí)候,我們的操作順序一般是:先在主表中插入記錄,然后獲得自動(dòng)生成的id,以它為基礎(chǔ)插入從表的記錄,需要的朋友可以參考下
    2019-06-06
  • java中staticclass靜態(tài)類詳解

    java中staticclass靜態(tài)類詳解

    這篇文章主要介紹了java中staticclass靜態(tài)類詳解,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Spring?@DateTimeFormat日期格式化時(shí)注解場景分析

    Spring?@DateTimeFormat日期格式化時(shí)注解場景分析

    這篇文章主要介紹了Spring?@DateTimeFormat日期格式化時(shí)注解場景分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05

最新評論

广平县| 博客| 类乌齐县| 永登县| 阳西县| 平原县| 沿河| 松阳县| 洪江市| 磴口县| 民权县| 名山县| 登封市| 普宁市| 洛南县| 祁阳县| 城固县| 江城| 云龙县| 威远县| 屏南县| 萨嘎县| 滁州市| 正蓝旗| 凌源市| 沙河市| 江津市| 河东区| 息烽县| 建阳市| 兴隆县| 遂溪县| 婺源县| 北安市| 泸州市| 高唐县| 仪征市| 黔江区| 丰都县| 卫辉市| 郓城县|