例如有一個實體類別
public class AnswerDto{ //一个回复的类,一个问题可能会有多个回复
int id;
int askId;//问题id
List<String> answers; //回复的列表
}
#我原本這麼寫,但是錯的 T0T, 應該要如何將content映射到List<String>
<select id="getAns" parameterType="int" resultMap="uiy">
select
id,
ask_id AS "askId",
content
from t_answer where ask_id = #{_parameter}
</select>
<resultMap type="AnswerDto" id="uiy">
<id property="id" column="id"/>
<result property="askId" column="askId" />
<collection property="ls" ofType="string">
<constructor>
<arg column="content"/>
</constructor>
</collection>
</resultMap>
mybatis是根據
<id>
標籤確定集合映射關係的, 如果一定要用你這個表的話可以這樣映射樓主這裡應該還少了一張表,就是問題表。
配合問題表,DTO的定義應該是這樣的。
這個時候 mybatis 的關聯查詢解決方案有很多,我附上一個連結吧。
Mybatis關聯查詢(巢狀查詢)
mybatis 的關聯查詢網路資料蠻多的,樓主可以多搜搜。
最後提一個建議,最好不要進行關聯查詢。資料的組裝邏輯放在程式碼裡面來做,這樣方便以後 DB 的改造。因為隨著資料量越來越大,關聯查詢效能比較糟糕,還不容易做分庫分錶的改造,不過這都是建立在業務有大量成長的情況下。當前的話,樓主開始培養這個意識就好啦。
表格欄位到複雜物件欄位的對應可以採用自訂TypeHandler的方式搞定。
eg:
MyBatis裡json型欄位到Java類別的對應
http://www.cnblogs.com/watery...