1. 程式人生 > >MyBatis中多對一對映時,執行sql語句的寫法

MyBatis中多對一對映時,執行sql語句的寫法

情境再現:

在使用MyBatis來進行多對一對映時,出現了sql語句中某個屬性為空的現象

<!-- 增加 地址資訊-->
 <insert id="insertAddress" parameterType="Address" useGeneratedKeys="true" keyProperty="id">
   insert into address(user_id,content,receiver,postcode,phone,address) values(#{user.id},#{content},#{receiver},#{postcode},#{phone},#{address})
 </insert>

在這裡插入圖片描述sss

我的兩個表結構如下:
Address地址表

private long id;//id
private User user;//使用者物件
private String receiver;//收件人
   。。。(省略不重要欄位)

User使用者表

public static final int Page_size=6;
	private static final long serialVersionUID = 1L;
	private long id;//id
	private String username;//賬號
	,。。(省略)

分析問題:
Mybatis中的insert方法體內主要是封裝了get()的方法來獲取屬性。所以在這裡就沒有得到user_id.

因為user_id是物件User中攜帶過來的。
而這裡的物件是Address.
還好Mybatis提供了一種方法。
請看:

解決問題:
Mybatis中可以使用物件.屬性來指定關聯的表中的欄位

 <!-- 增加 地址資訊-->
 <insert id="insertAddress" parameterType="Address" useGeneratedKeys="true" keyProperty="id">
   insert into address(user_id,content,receiver,postcode,phone,address) values(#{user.id},#{content},#{receiver},#{postcode},#{phone},#{address})
 </insert>