您好,登錄后才能下訂單哦!
本篇內容介紹了“Mybatis中的一對多舉例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一對多
(1)類別表不變化,新增加產品表,一個類別下有多個產品
(2)創建Product實體類
private int id; private String name; private float price; setter,getter,tostring
(3)修改Category實體類,提供products的集合
private int id; private String name; List<Product> products; setter,getter,tostring
(4)暫時無需 Product.xml
(5)修改Category.xml
<mapper namespace="com.how2java.pojo"> <resultMap type="Category" id="categoryBean"> <id column="cid" property="id" /> <result column="cname" property="name" /> <!-- 一對多的關系 --> <!-- property: 指的是集合屬性的值, ofType:指的是集合中元素的類型 --> <collection property="products" ofType="Product"> <id column="pid" property="id" /> <result column="pname" property="name" /> <result column="price" property="price" /> </collection> </resultMap> <!-- 關聯查詢分類和產品表 --> <select id="listCategory" resultMap="categoryBean"> select c.*, p.*, c.id 'cid', p.id 'pid', c.name 'cname', p.name 'pname' from category_ c left join product_ p on c.id = p.cid </select> </mapper>
通過left join關聯查詢,對Category和Product表進行關聯查詢。
與前面的有所區別,這里不是用的resultType, 而是resultMap,通過resultMap把數據取出來放在對應的 對象屬性里。
注: Category的id 字段 和Product的id字段同名,Mybatis不知道誰是誰的,所以需要通過取別名cid,pid來區分。name字段同理。
(6)在TestOneToMany中
List<Category> cs = session.selectList("listCategory"); for (Category c : cs) { System.out.println(c); List<Product> ps = c.getProducts(); for (Product p : ps) { System.out.println("\t"+p); } }
“Mybatis中的一對多舉例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。