一對多sql語句怎么寫,Mybatis 一對多

 2023-12-06 阅读 26 评论 0

摘要:寫在開頭的話:首先要討論下為什么一定要用一對多、多對一,如果我的實體bean 中并不是和數據庫中的表做到一一對應,實體bean 的屬性比表字段要多(當然是為了滿足業務)?那么不用對應關系,也可以解決業務上的需求。但是這樣會讓你的實體bean

寫在開頭的話:

首先要討論下為什么一定要用一對多、多對一,如果我的實體bean 中并不是和數據庫中的表做到一一對應,實體bean 的屬性比表字段要多(當然是為了滿足業務)?
那么不用對應關系,也可以解決業務上的需求。
但是這樣會讓你的實體bean 顯得是如此的丑陋和混亂,為了保持pojo 的整潔,所以有必要用對應關系(個人感覺。。。)

不管你采不采用對應關系來查詢,sql 語句并沒有簡化寫法,這和hibernate 的HQL來級聯查詢的效果不同?

?

一對多之 collection:?

一對多sql語句怎么寫?配置文件:(方式一 更利于resultMap 的重用)

<mapper namespace="com.azcsoft.casecade.dao.CaseCadeDao">
<!-- 方式一 ?-->?
<resultMap ?id="teaMap" type="com.azcsoft.casecade.vo.Tea">
<result property="teaName" column="teaname" />
<result property="teaSex" column="teasex"/>
<result property="teaAge" column="teaage" />
<collection property="stus" ? resultMap="stuMap" />
</resultMap>
<resultMap ?id="stuMap" type="com.azcsoft.casecade.vo.Stu">
<result property="stuName" column="stuname" />
<result property="stuSex" column="stuage"/>
<result property="stuAddress" column="stuaddress" />
</resultMap>
<select id="teaSel" resultMap="teaMap">
select * from tea a left join stu b on a.teaid = b.teaid
</select>
?

<!-- 方式二: -->

?<resultMap type="com.azcsoft.vo.Author" id="authors">
?
<result property="aid" column="a_id" />
?
<result property="aname" column="aname" />
?
<result property="asex" column="asex" />
?
<result property="birsday" column="abirsday" />
?
<collection property="blogs" ofType="com.azcsoft.vo.Blog"?>
<result property="bid" column="b_id"/>
?
<result property="bname" column="bname"/>
?
<result property="bcontent" column="bcontent"/>
?
<result property="ctime" column="bctime"/>
?
</collection>
?</resultMap>

?<select id="authorSel" resultMap="authors">
?select a.a_id,a.aname,a.abirsday,b.* from author a left join blog b on a.a_id = b.a_id
?</select>?

</mapper>

?

?多對一 之 association

? 方式一:(利于resultMap 的重用)

<resultMap type="com.azcsoft.vo.Author" id="author">
<result property="aid" column="a_id" />
<result property="aname" column="aname" />
<result property="asex" column="asex" />
<result property="birsday" column="abirsday" />
</resultMap>
<resultMap type="com.azcsoft.vo.Blog" id="blogs">
<result property="bid" column="b_id"/>
<result property="bname" column="bname"/>
<result property="bcontent" column="bcontent"/>
<result property="ctime" column="bctime"/>
<association property="author" column="a_id" resultMap="author"?/>
</resultMap>
<select id="blogSel" resultMap="blogs">
select * from blog a left join author b on a.a_id = b.a_id
</select>

數據庫一對多,?

? 方式二:
<resultMap type="com.azcsoft.vo.Blog" id="blogs">
<result property="bid" column="b_id"/>
<result property="bname" column="bname"/>
<result property="bcontent" column="bcontent"/>
<result property="ctime" column="bctime"/>
<association property="author" column="a_id" javaType="com.azcsoft.vo.Author">
<result property="aid" column="a_id" />
<result property="aname" column="aname" />
<result property="asex" column="asex" />
<result property="birsday" column="abirsday" />
</association>
? ? ?</resultMap>

<select id="blogSel" resultMap="blogs">
select * from blog a left join author b on a.a_id = b.a_id
? ? ?</select>

?

------------------------------------對象:

public class Tea {
private String teaName;
private String teaSex;
private String teaAge;
private List<Stu> stus;

?}

一對多和多對一sql表。?

------------------------------------表:?

STU 表中 關聯 TEA 的主鍵?

?

轉載于:https://www.cnblogs.com/leonkobe/p/3444051.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/192852.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息