生活随笔
收集整理的這篇文章主要介紹了
Struts2一对多配置
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在多表映射配置時(shí),我們應(yīng)該遵循以下不步驟:
確定兩張表之間的關(guān)系在數(shù)據(jù)庫(kù)中實(shí)現(xiàn)兩張表之間的關(guān)系建立在實(shí)體類中描述出兩個(gè)實(shí)體類之間的關(guān)系在映射配置文件中建立兩個(gè)實(shí)體和兩張表之間的關(guān)系
我們就按照上面的步驟做,我這里有一張聯(lián)系人表和一張客戶表,一對(duì)多關(guān)系,實(shí)體類代碼如下:
/*** 客戶的實(shí)體類* @author dengg**/
public class Customer {private Long custId;private String custName;private String custSource;private String custIndustry;private String custLevel;private String custAddress;private String custPhone;public Long getCustId() {return custId;}public void setCustId(Long custId) {this.custId = custId;}public String getCustName() {return custName;}public void setCustName(String custName) {this.custName = custName;}public String getCustSource() {return custSource;}public void setCustSource(String custSource) {this.custSource = custSource;}public String getCustIndustry() {return custIndustry;}public void setCustIndustry(String custIndustry) {this.custIndustry = custIndustry;}public String getCustLevel() {return custLevel;}public void setCustLevel(String custLevel) {this.custLevel = custLevel;}public String getCustAddress() {return custAddress;}public void setCustAddress(String custAddress) {this.custAddress = custAddress;}public String getCustPhone() {return custPhone;}public void setCustPhone(String custPhone) {this.custPhone = custPhone;}@Overridepublic String toString() {return "Customer [custId=" + custId + ", custName=" + custName + ", custSource=" + custSource+ ", custIndustry=" + custIndustry + ", custLevel=" + custLevel + ", custAddress=" + custAddress+ ", custPhone=" + custPhone + "]";}public Customer(Long custId, String custName) {super();this.custId = custId;this.custName = custName;}public Customer() {}}
/*** 聯(lián)系人的實(shí)體類* @author dengg**/
public class LinkMan implements Serializable {private Long lkmId;private String lkmName;private String lkmPhone;private String lkmMobile;private String lkmEmail;private String lkmPosition;private String lkmMemo;public Long getLkmId() {return lkmId;}public void setLkmId(Long lkmId) {this.lkmId = lkmId;}public String getLkmName() {return lkmName;}public void setLkmName(String lkmName) {this.lkmName = lkmName;}public String getLkmPhone() {return lkmPhone;}public void setLkmPhone(String lkmPhone) {this.lkmPhone = lkmPhone;}public String getLkmMobile() {return lkmMobile;}public void setLkmMobile(String lkmMobile) {this.lkmMobile = lkmMobile;}public String getLkmEmail() {return lkmEmail;}public void setLkmEmail(String lkmEmail) {this.lkmEmail = lkmEmail;}public String getLkmPosition() {return lkmPosition;}public void setLkmPosition(String lkmPosition) {this.lkmPosition = lkmPosition;}public String getLkmMemo() {return lkmMemo;}public void setLkmMemo(String lkmMemo) {this.lkmMemo = lkmMemo;}@Overridepublic String toString() {return "LinkMan [lkmId=" + lkmId + ", lkmName=" + lkmName + ", lkmPhone=" + lkmPhone + ", lkmMobile="+ lkmMobile + ", lkmEmail=" + lkmEmail + ", lkmPosition=" + lkmPosition + ", lkmMemo=" + lkmMemo + "]";}}
第二步在數(shù)據(jù)庫(kù)中實(shí)現(xiàn)兩張表之間的關(guān)系建立,因?yàn)槲矣昧薶ibernate,會(huì)自動(dòng)創(chuàng)建,就不弄了
第三步在實(shí)體類中描述出兩個(gè)實(shí)體類之間的關(guān)系:
首先我們?cè)贑ustomer類中配置LinkMan類的關(guān)系,一個(gè)客戶對(duì)應(yīng)多個(gè)聯(lián)系人
我們?cè)贑ustomer加入如下代碼:
private Set<LinkMan> likmans = new HashSet<LinkMan>(0);public Set<LinkMan> getLikmans() {return likmans;}public void setLikmans(Set<LinkMan> likmans) {this.likmans = likmans;}
主表應(yīng)該包含從表實(shí)體的集合引用,用set集合來建立關(guān)系,再配置set和get方法,就行了。
接著配置LinkMan,加入代碼如下:
private Customer customer;public Customer getCustomer() {return customer;}public void setCustomer(Customer customer) {this.customer = customer;}
第四步在映射配置文件中建立兩個(gè)實(shí)體和兩張表之間的關(guān)系:
我們先打開Customer.hbm.xml文件,里面加入配置如下:
<set name="likmans" table="cust_linkman"><key column="lkm_cust_id"></key><one-to-many class="LinkMan"/></set>
name:就是我們?cè)贑ustomer類中設(shè)置set集合的名字
table:指定從表的名字,也就是聯(lián)系人表名
key:指定外鍵字段名
one-to-many:指定從表實(shí)體名稱
然后打開LinkMan.hbm.xml文件,在里面加入如下代碼:
<many-to-one name="customer" class="Customer" column="lkm_cust_id"></many-to-one>
name:從表實(shí)體引用主表實(shí)體對(duì)象引用的名稱嗎,就是在LinkMan類中設(shè)置Customer對(duì)象的名稱
class:指定屬性所對(duì)應(yīng)的實(shí)體類名稱,就是Customer路徑
column:指定外鍵的名稱
總結(jié)
以上是生活随笔為你收集整理的Struts2一对多配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。