Mybatis使用ResultMap實現一對一關係詳解(一)
阿新 • • 發佈:2019-02-07
首先資料庫的建立 如圖
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();
測試結果為