最近專案中有這樣一種需求,有一張園區表t_zone;一張表t_picture,乙個園區可能對應好幾張(可以把t_zone理解為訂單,t_picture理解為商品,一張訂單可能對應好幾件商品)
public class zone extends baseentity
public void setid(string name)
public string getname()
public void setname(string name)
public listgetpicturelist()
public void setpicturelist(listpicturelist)
public string getobjid()
public void setobjid(string objid)
}
public class zone extends baseentity
public void setid(string name)
public string geturl()
public void seturl(string url)
}
select t1.*
from
t_zone t1
where
t1.id=#
for (zone vo : list)
(其實這舉的例子有點不太好,因為查詢園區返回的是個集合)
專案完成後偶然得知mybatis中collection可以解決一對多查詢,就改寫**,改寫後的**對資料庫進行一次查詢就可以得到想要的結果:
select t1.*, t2.id 'picid',t2.url
from
t_zone t1,t_picture t2
where
t1.id=t2.obj_id
t1.id=#
因為資料庫資料不多,所以就將增加了查詢次數
耗時(ms)
10次
50次
100次
1000次
方法方法一
方法二方法一
方法二方法一
方法二方法一
方法二總耗時
5190
8376829
3984
12642
9017
130017
94880
平均耗時
519.00
83.70
136.58
79.7
126.42
90.17
130.02
94.88
通過對比,可看出方法二用collection明顯比方法一效能要好,耗時少。如果考慮大資料的,可能性能體現的就明顯了。
mysql join 一對多 Join 一對多連線
資料庫常見的join方式有三種 inner join,left outter join,right outter join 還有一種full join,因不常用,本文不討論 這三種連線方式都是將兩個以上的表通過on條件語句,拼成乙個大表。以下是它們的共同點 1.關於左右表的概念。左表指的是在sql語...
MySQL關係 一對多 一對一 多對多
將實體與實體的關係,反應到最終資料庫表的設計上,將關係分為三種 一對一,一對多 多對一 和多對多,所有的關係都是表與表之間的關係 一對一 一對一 一張表的一條記錄只能與另外一條記錄進行對應,反之亦然 id p 姓名 性別 年齡 身高 婚姻狀況 籍貫 家庭位址 緊急聯絡人 體重 表設計成以上這種形式 ...
hibernate單向一對多和雙向一對多
單向一對多 例如有部門封裝類 private int deptno private string deptname private string location 有職員封裝類 private int empno private string empname private dept dept 在多...