Mybatis之關聯查詢
阿新 • • 發佈:2019-01-03
一、一對一關聯
1.使用resultType
(1)新建OrderUser的pojo,繼承自Order
//關聯使用者資訊的POJO
public class OrderUser extends Order {
private String username;
private String address;
//get,set
}
(2)修改order的對映檔案,新增查詢方法getOrderUser
<!-- 一對一關聯查詢,使用resultType --> <select id="getOrderUser" resultType="orderuser"> SELECT o.`id`, o.`user_id` userId, o.`number`, o.`createtime`, o.`note`, u.`username`, u.`address` FROM `order` o LEFT JOIN `user` u ON u.id = o.`user_id` </select>
2.使用resultMap
(1)改造order的pojo
public class Order {
private Integer id;
private Integer userId;
private String number;
private Date createtime;
private String note;
//引用User類
private User user;
//get,set
}
(2) 修改order的對映檔案
<!-- 一對一關聯查詢-resultMap --> <resultMap type="order" id="order_user_map"> <!-- id標籤用於繫結主鍵 --> <id property="id" column="id"/> <!-- 使用result繫結普通欄位 --> <result property="userId" column="user_id"/> <result property="number" column="number"/> <result property="createtime" column="createtime"/> <result property="note" column="note"/> <!-- association:配置一對一關聯 property:繫結的使用者屬性 javaType:屬性資料型別,支援別名 --> <association property="user" javaType="com.mark.pojo.User"> <id property="id" column="user_id"/> <result property="username" column="username"/> <result property="address" column="address"/> <result property="sex" column="sex"/> </association> </resultMap> <!-- 一對一關聯查詢-使用resultMap --> <select id="getOrderUser" resultMap="order_user_map"> SELECT o.`id`, o.`user_id`, o.`number`, o.`createtime`, o.`note`, u.`username`, u.`address`, u.`sex` FROM `order` o LEFT JOIN `user` u ON u.id = o.`user_id` </select>
二、一對多關聯
使用resultMap
(1)改造user的pojo
public class User {
private Integer id;
private String username;// 使用者姓名
private String sex;// 性別
private Date birthday;// 生日
private String address;// 地址
//加入Order引用
private List<Order> orders;
//get,set
}
(2)修改user的對映檔案
<!-- 一對多關聯查詢 --> <resultMap type="user" id="user_order_map"> <id property="id" column="id" /> <result property="username" column="username" /> <result property="birthday" column="birthday" /> <result property="address" column="address" /> <result property="sex" column="sex" /> <result property="uuid2" column="uuid2" /> <!-- collection:配置一對多關係 property:使用者下的order屬性名 ofType:property的資料型別,支援別名 --> <collection property="orders" ofType="order"> <!-- id標籤用於繫結訂單主鍵 --> <id property="id" column="oid"/> <!-- 使用result繫結普通欄位 --> <result property="userId" column="id"/> <result property="number" column="number"/> <result property="createtime" column="createtime"/> </collection> </resultMap> <!-- 一對多關聯查詢 --> <select id="getUserOrder" resultMap="user_order_map"> SELECT u.`id`, u.`username`, u.`birthday`, u.`sex`, u.`address`, u.`uuid2`, o.`id` oid, o.`number`, o.`createtime` FROM `user` u LEFT JOIN `order` o ON o.`user_id` = u.`id`