MyBatis之关联映射

来源:互联网 发布:cv 数据库 编辑:程序博客网 时间:2024/05/16 16:20

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、最后,一定要注意在总配置文件中包含映射文件。

原创粉丝点击