java - Mybatis 一對多怎么映射
問題描述
比如有一個(gè)實(shí)體類
public class AnswerDto{ //一個(gè)回復(fù)的類,一個(gè)問題可能會(huì)有多個(gè)回復(fù) int id; int askId;//問題id List<String> answers; //回復(fù)的列表}
我原本這么寫,但是是錯(cuò)的 T0T, 應(yīng)該如何將content映射到List<String>
<select 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>
問題解答
回答1:mybatis是根據(jù)<id>標(biāo)簽確定集合映射關(guān)系的, 如果一定要用你這個(gè)表的話可以這樣映射
<id column='askId' property='askId' /><result column='id' property='id'/><collection property='answers' ofType='java.lang.String' javaType='java.util.List'> <result column='content' /></collection>回答2:
樓主這里應(yīng)該還少了一張表,就是問題表。
配合問題表,DTO的定義應(yīng)該是這樣的。
public class QuestionDTO { int questionId; String questionDesc; List<AnswerDTO> answers; // Answers of the question int created; // 創(chuàng)建時(shí)間 int updated; // 更新時(shí)間}public class AnswerDTO{ //一個(gè)回復(fù)的類,一個(gè)問題可能會(huì)有多個(gè)回復(fù) int id; int questionId; // 問題id String content; // 答案內(nèi)容 int created; // 創(chuàng)建時(shí)間 int updated; // 更新時(shí)間}
這個(gè)時(shí)候 mybatis 的關(guān)聯(lián)查詢解決方案有很多,我附上一個(gè)鏈接吧。
Mybatis關(guān)聯(lián)查詢(嵌套查詢)
mybatis 的關(guān)聯(lián)查詢網(wǎng)上資料蠻多的,樓主可以多搜搜。
最后提一個(gè)建議,最好不要進(jìn)行關(guān)聯(lián)查詢。數(shù)據(jù)的組裝邏輯放在代碼里面來做,這樣方便以后 DB 的改造。因?yàn)殡S著數(shù)據(jù)量越來越大,關(guān)聯(lián)查詢性能比較糟糕,還不容易做分庫分表的改造,不過這都是建立在業(yè)務(wù)有大量增長的情況下。當(dāng)前的話,樓主開始培養(yǎng)這個(gè)意識(shí)就好啦。
回答3:表字段到復(fù)雜對象字段的映射可以采用自定義TypeHandler的方式搞定。eg:MyBatis里json型字段到Java類的映射http://www.cnblogs.com/watery...
相關(guān)文章:
1. javascript - node中為中間層如何解決跨域問題2. javascript - webpack打包問題3. ie-css3.htc 放在服務(wù)器上為什么不起作用4. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境5. 看了好幾遍為什么點(diǎn)擊登錄沒有反應(yīng)呢 在線等。。。。6. html5 - 百度echart官網(wǎng)下載的地圖json數(shù)據(jù)亂碼7. PhpStudy 8.0 一個(gè)服務(wù)器怎么創(chuàng)建多個(gè)網(wǎng)站,需要注意一些什么8. javascript - 請教一個(gè)問題,大家都是怎么安裝從github下面clone下來的包的開發(fā)環(huán)境呢?9. javascript - Object.create(null) 和 {} 區(qū)別是什么10. Python pyinstaller 打包后在其他電腦運(yùn)行失敗
