MyBatis級聯一個物件屬性賦值
阿新 • • 發佈:2018-12-29
兩個pojo類如下:
package com.itlike.domain; import lombok.Getter; import lombok.Setter; import lombok.ToString; @[email protected]@ToString public class Customer { private Integer cust_id; private String cust_name; private String cust_profession; private String cust_phone; private String email; }
package com.itlike.domain;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@[email protected]@ToString
public class Order {
private Integer order_id;
private String order_name;
private String order_num;
private Customer customer;
}
資料庫裡有兩張表,客戶表和訂單表,訂單表的外來鍵指向客戶表的主鍵
需求:查詢所有的訂單及其對應客戶
OrderMapper內容如下:
package com.itlike.mapper;
import com.itlike.domain.Order;
import java.util.List;
public interface OrderMapper {
//查詢所有訂單及其對應客戶
public List<Order> getAllOrder();
}
OrderMapper.xml內容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.itlike.mapper.OrderMapper"> <resultMap id="orderMap" type="Order"> <id property="order_id" column="order_id"/> <result property="order_name" column="order_name"/> <result property="order_num" column="order_num"/> <!--級聯對映寫法一--> <result property="customer.cust_id" column="cust_id"/> <result property="customer.cust_name" column="cust_name"/> <result property="customer.cust_profession" column="cust_profession"/> <result property="customer.cust_phone" column="cust_phone"/> <result property="customer.email" column="email"/> <!--級聯對映寫法二 開發中更多用這種--> <association property="customer" javaType="Customer"> <id property="cust_id" column="cust_id"/> <result property="cust_name" column="cust_name"/> <result property="cust_profession" column="cust_profession"/> <result property="cust_phone" column="cust_phone"/> <result property="email" column="email"/> </association> </resultMap> <select id="getAllOrder" resultMap="orderMap"> SELECT * from `order` as o LEFT JOIN `customer` as c on o.cust_id=c.cust_id; </select> </mapper>
使用第一種寫法時,自身的屬性可以省略不寫,使用association時,不僅級聯首先要寫,自身屬性也必須得寫
使用association時,一定要寫javaType,否則出現空指標異常