Mybatis的mapper.xml檔案詳解

來源:互聯網
上載者:User

標籤:注入   csdn   .net   列表   沒有   detail   java   map   不能   

1、#{}和${}的區別:

        #{}表示一個預留位置號,#{}接收輸入參數,類型可以是簡單類型,pojo、hashmap。
        如果接收簡單類型,#{}中可以寫成value或其它名稱。
        #{}接收pojo對象值,通過OGNL讀取對象中的屬性值,通過屬性.屬性.屬性...的方式擷取對象屬性值。

        ${}表示一個拼接符號,會引用sql注入,所以不建議使用${}。
        ${}接收輸入參數,類型可以是簡單類型,pojo、hashmap。
        如果接收簡單類型,${}中只能寫成value。
        ${}接收pojo對象值,通過OGNL讀取對象中的屬性值,通過屬性.屬性.屬性...的方式擷取對象屬性值。

2、selectOne和selectList的區別:
        selectOne表示查詢出一條記錄進行映射。如果使用selectOne可以實現使用selectList也可以實現(list中只有一個對象)。

        selectList表示查詢出一個列表(多條記錄)進行映射。如果使用selectList查詢多條記錄,不能使用selectOne。
        如果使用selectOne報錯:
        org.apache.ibatis.exceptions.TooManyResultsException:
        Expected one result (or null) to be returned by selectOne(), but found: 4

3、在對應檔中通過parameterType指定輸入參數的類型。

4、在對應檔中通過resultType指定輸出結果的類型。

 

5、resultType:

使用resultType實現較為簡單,如果pojo中沒有包括查詢出來的列名,

需要增加列名對應的屬性,即可完成映射。

如果沒有查詢結果的特殊要求建議使用resultType。

 

6、resultMap:

需要單獨定義resultMap,實現有點麻煩,如果對查詢結果有特殊的要求,

使用resultMap可以完成將關聯查詢映射pojo的屬性中。

resultMap可以實現消極式載入,resultType無法實現消極式載入。

 

6.1、resultMap:

使用association和collection完成一對一和一對多進階映射(對結果有特殊的映射要求)。

association:

作用:將關聯查詢資訊映射到一個pojo對象中。

場合:為了方便查詢關聯資訊可以使用association將關聯訂單資訊映射為使用者物件的pojo屬性中,

比如:查詢訂單及關聯使用者資訊。

使用resultType無法將查詢結果映射到pojo對象的pojo屬性中,根據對結果集查詢遍曆的需要選擇使用resultType還是resultMap

 

collection:

作用:將關聯查詢資訊映射到一個list集合中。

場合:為了方便查詢遍曆關聯資訊可以使用collection將關聯資訊映射到list集合中,

比如:查詢使用者權限範圍模組及模組下的菜單,

可使用collection將模組映射到模組list中,將菜單列表映射到模組對象的菜單list屬性中,

這樣的作的目的也是方便對查詢結果集進行遍曆查詢。如果使用resultType無法將查詢結果映射到list集合中。

 


7、友情連結

     Mybatis入門例子

     mybatis官網

 

Mybatis的mapper.xml檔案詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.