1. 程式人生 > >Mybatis使用ResultMap實現一對一關係詳解(一)

Mybatis使用ResultMap實現一對一關係詳解(一)

首先資料庫的建立    如圖


user表屬性


orders表屬性


進行主外來鍵關聯如圖


這樣資料庫就設計好了 測試一下


接下來建立bean類   user.java

package com.hp.bean;

import java.util.List;

public class User {
		//使用者表
	private Integer id;
	private String name;
	private int ses;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public int getSes() {
		return ses;
	}
	public void setSes(int ses) {
		this.ses = ses;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", ses=" + ses + "]";
	}

	
}

建立  Orders.java

package com.hp.bean;

import java.util.List;

public class Orders {
	//商品訂單表
private Integer o_id;
private String o_name;
private Integer u_id;
//使用者表
private User user;

public User getUser() {
	return user;
}
public void setUser(User user) {
	this.user = user;
}
public Integer getO_id() {
	return o_id;
}
public void setO_id(Integer o_id) {
	this.o_id = o_id;
}
public String getO_name() {
	return o_name;
}
public void setO_name(String o_name) {
	this.o_name = o_name;
}
public Integer getU_id() {
	return u_id;
}
public void setU_id(Integer u_id) {
	this.u_id = u_id;
}
}

mapper.xml檔案

<!-- 定義resultmap -->
<resultMap type="com.hp.bean.Orders" id="findmap">
<id column="o_id" property="o_id"/>
<result column="o_name" property="o_name"/>
<!--association 使用者關係對映 查詢單個物件 一個訂單關聯查詢出來一個使用者  -->
<association property="user" javaType="com.hp.bean.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="ses" property="ses"/>
</association>
</resultMap>


<!-- 使用resultMap 查詢訂單關聯查詢使用者資訊-->
<select id="FindResultMap" resultMap="findmap">
select id,name,ses,o_id,o_name from orders,USER WHERE orders.u_id=user.id 
</select>

    在resultMap中   id: 為唯一標識如果多個列組成唯一標識,那就設定多個id

                        column:資料庫表的列        property:資料庫表的列對映到類的那個屬性中   result:就是普通列

   在association中  property:要將關聯查詢的使用者資訊對映到表(orders)那個屬性中(user)

javaType:指定對映到表的資料型別(User型別)

mapper.java

	//使用resultmap 進行關聯查詢訂單和使用者資訊
	    public List<Orders> FindResultMap();

     測試結果為