MyBatis中多對一對映時,執行sql語句的寫法
阿新 • • 發佈:2018-12-17
情境再現:
在使用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>
我的兩個表結構如下:
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>