MyBatis之关联映射

1、首先在数据库中创建person表与order表

代码如下:

create table person(personId varchar(36) primary key,
personName varchar(64),
personAddress varchar(128),
personTel varchar(11));


create table orders(orderId varchar(36),
orderNumber varchar(20),
orderPrice int,
pid varchar(36));


2、书写相应的pojo

代码如下:

package com.njupt.pojo;


import java.util.List;


public class Person {


private String id;
private String name;
private String address;
private String tel;
private List<Order> orders;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public List<Order> getOrders() {
return orders;
}
public void setOrders(List<Order> orders) {
this.orders = orders;
}


}



Order类如下:

package com.njupt.pojo;


public class Order {


private String id;
private int number;
private int price;

private Person p;


public String getId() {
return id;
}


public void setId(String id) {
this.id = id;
}


public int getNumber() {
return number;
}


public void setNumber(int number) {
this.number = number;
}


public int getPrice() {
return price;
}


public void setPrice(int price) {
this.price = price;
}


public Person getP() {
return p;
}


public void setP(Person p) {
this.p = p;
}


}


3、书写相应的映射文件

Person.xml(一对多)的主要代码如下:

<resultMap type="Person" id="personMap">
  <id column="personId" property="id"/>
  <result column="personName" property="name"/>
  <result column="personAddress" property="address"/>
  <result column="personTel" property="tel"/>
  
  <collection property="orders" ofType="Order">
     <id column="orderId" property="id"/>
     <result column="orderNumber" property="number"/>
     <result column="orderPrice" property="price"/>
  </collection>
</resultMap>

<select id="select1" parameterType="string" resultMap="personMap">
  select p.*,o.* from person p ,orders o where p.personId = o.pid and p.personId = #{id}
</select>

Order.xml(多对一)的主要代码如下:

<resultMap type="Order" id="orderMap">
<id column="orderId" property="id" />
<result column="orderNumber" property="number" />
<result column="orderPrice" property="price" />


<association property="p" javaType="Person">
<id column="personId" property="id" />
<result column="personName" property="name" />
<result column="personAddress" property="address" />
<result column="personTel" property="tel" />


</association>


</resultMap>
    
    <select id="select2" parameterType="string" resultMap="orderMap">
        select p.*,o.* from person p , orders o where p.personId = o.pid and o.orderId = #{id} 
    </select>


4、最后,一定要注意在总配置文件中包含映射文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值