級聯(lián)關系是一個數(shù)據(jù)庫實體的概念,有 3 種級聯(lián)關系,分別是一對一級聯(lián)、一對多級聯(lián)以及多對多級聯(lián)。例如,一個角色可以分配給多個用戶,也可以只分配給一個用戶。大部分場景下,我們都需要獲取角色信息和用戶信息,所以會經(jīng)常遇見以下 SQL。
SELECT r.*,u.* FROM t_role r INNER JOIN t_user_role ur ON r.id = ur.id INNER JOIN t_user u ON ur.user_id = u.id WHERE r.id = #{id}
在級聯(lián)中存在 3 種對應關系。
一對多的關系,如角色和用戶的關系。通俗的理解就是,一家軟件公司會存在許多軟件工程師,公司和軟件工程師就是一對多的關系。
一對一的關系。每個軟件工程師都有一個編號(ID),這是他在公司的標識,它與工程師是一對一的關系。
多對多的關系,有些公司一個角色可以對應多個用戶,但是一個用戶可以兼任多個角色。通俗的說,一個人既可以是總經(jīng)理,同時也是技術總監(jiān),而技術總監(jiān)這個職位可以對應多個人,這就是多對多的關系。
實際應用中,由于多對多的關系比較復雜,會增加理解和關聯(lián)的復雜度,所以應用較少。推薦的方法是,用一對多的關系把它分解為雙向關系,以降低關系的復雜度,簡化程序。具體操作方法可以參考《MyBatis多對多關聯(lián)查詢》一節(jié)。
級聯(lián)的優(yōu)點是獲取關聯(lián)數(shù)據(jù)十分便捷。但是級聯(lián)過多會增加系統(tǒng)的復雜度,同時降低系統(tǒng)的性能,此增彼減。所以記錄超過 3 層時,就不要考慮使用級聯(lián)了,因為這樣會造成多個對象的關聯(lián),導致系統(tǒng)的耦合、負載和難以維護。
本教程分為 3 節(jié)對 MyBatis 的級聯(lián)關系進行詳細講解,小伙伴們請點擊下方鏈接閱讀學習。
MyBatis一對一關聯(lián)查詢
MyBatis一對多關聯(lián)查詢
MyBatis多對多關聯(lián)查詢