激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot JPA 表關聯查詢實例

SpringBoot JPA 表關聯查詢實例

2020-09-08 10:40漫步于成神之路男人 Java教程

本篇文章主要介紹了SpringBoot JPA 表關聯查詢實例,使用JPA原生的findBy語句實現,具有一定的參考價值,有興趣的可以了解一下。

今天給大家介紹一下如何利用JPA實現表關聯查詢

今天給大家舉一個一對多的關聯查詢,并且是使用JPA原生的findBy語句實現的。

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

Floor類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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;
 
  /**
   * 發布用戶ID
   */
  @Column(length = 36,name = "user_id")
  private String userId;
 
  /**
   * 樓層名稱
   */
  private String name;
 
  /**
   * 樓層的模板路徑
   */
  private String templateUrl;
 
  /**
   * 類型
   * 1.管理端
   * 2.供應商
   */
  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類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
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.
 * 樓層的內容
 */
 
@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;
 
  /**
   * 發布用戶ID
   */
  @Column(length = 36, name = "user_id")
  private String userId;
 
  /**
   * 內容名稱
   */
  private String name;
 
  /**
   *
   * 內容圖片
   */
  @Column(length = 256)
  private String contentImageUrl;
 
  /**
   * 類型
   * 1.超鏈接
   * 2.圖片檢索
   */
  private Integer type;
 
  /**
   * 超鏈接url
   */
  private String linkUrl;
 
  /**
   * 圖片檢索內容
   */
  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;
  }
}

實體類已經出來了,現在具體說說怎么利用JPA中findBy來實現關聯查詢:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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.
 * 樓層內容管理dao類
 */
public interface FloorContentRepos extends JpaRepository<FloorContent,String>{
  public Page<FloorContent> findByFloor_IdAndIsDeleteOrderByShowIndexAsc(String floorId,boolean b, Pageable pageable);
}

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

首先findBy是必須寫的,表示使用JPA規則進行查詢。

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

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

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

從上面的案例就可以看出可以在findBy后面添加要關聯的實體類,然后在實體類后面寫上“_”,"_"符號后面是添加關聯表的字段而不是本身表的字段,這點要記住。如何還想關聯更多的表可以在后面添加:And+表名字+“_”+表中要查詢的字段。或者只是想關聯本身的查詢字段可以在后面添加:And+查詢的字段。

千萬不要寫錯了,寫錯的話運行都運行不起來的。所以寫的時候要多看看是否符合規則。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/linzhiqiang0316/article/details/53022683

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费观看又色又爽又黄的崩锅 | av在线播放免费观看 | 国产精品久久在线观看 | 欧美性生活久久 | 久久久久国产精品久久久久 | 精品国产一区二区三区四区在线 | 亚洲综合91| 国产精选电影免费在线观看网站 | 欧美性黄| 成人短视频在线播放 | 免费黄色在线电影 | 黄色免费不卡视频 | 欧美国产一级片 | 香蕉久草在线 | 亚洲精品午夜视频 | 欧美黄成人免费网站大全 | 国产午夜精品久久久久婷 | 婷婷中文字幕一区二区三区 | 日本免费一区二区三区四区 | 一级黄色毛片播放 | 久久777国产线看观看精品 | 在线观看一二三 | 亚洲一级成人 | 日韩视频一区二区三区在线观看 | 国产一区二区在线免费播放 | 成人毛片100部 | 国产一级二级视频 | 成人免费一区二区三区 | h色视频在线观看 | 欧美性受ⅹ╳╳╳黑人a性爽 | 在线免费观看毛片视频 | 色网在线视频 | 精品久久久久久久久久久下田 | 欧美毛片在线观看 | 国产一级毛片在线看 | 精品亚洲在线 | 精品三级内地国产在线观看 | 欧美a v在线 | 一级大片一级一大片 | 9191久久久久视频 | 黄色aaa视频 |