Mybatis

什么是 MyBatis ?

? ? ? ?MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或注解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。

特點:

? ? ? ?與JDBC相近的持久化框架,運行效率高;提供靈活的查詢方式,但需要自己寫SQL語句;不會自動進行級聯(lián)操作,需要使用SQL手動進行;需要考慮入?yún)⒑统鰠⒌念愋图捌鋵?yīng)關(guān)系。

基礎(chǔ)使用:

導(dǎo)入mybatis和mysql-connector-java依賴。

配置mybatis:

? ? ? ?該配置可在官網(wǎng)上找到,中文版!!很容易上手。

<environments>:可有多個子<environment>,default指向某一子<environment>。

<environment>:配置數(shù)據(jù)庫連接。

<transcationManager>:事務(wù)管理器配置。

<dataSource>:配置數(shù)據(jù)庫連接。

<mappers>:配置JavaBean映射文件所在位置。

JavaBean文件映射配置:


UserDTO的JavaBean


UserDTO的映射文件

<mapper>:namespace屬性值不可少,用于識別不同的數(shù)據(jù)庫操作。

<select>:查詢方法,parameterType是入?yún)⒌念愋?,ResultMap是最終的查詢結(jié)果。

<resultMap>:配置返回結(jié)果的屬性。

<id/>:表的主鍵屬性。

<result>:表的非主鍵屬性。

<association>:一對多關(guān)聯(lián)表的屬性。其中column為調(diào)用的查詢方法的入?yún)?,javaType是關(guān)聯(lián)表的Bean對象。select是對應(yīng)的關(guān)聯(lián)表的查詢方法,組成為對應(yīng)JavaBean映射文件的namespace+ "." +<select>的id屬性值,詳見下圖。


BlogDTO的JavaBean



BlogDTO的映射文件

此例中user與blog是一對一關(guān)系、與photo是一對多關(guān)系;blog與content、photo為一對多關(guān)系;content與photo是一對多關(guān)系。此處<collection>表示為對應(yīng)的JavaBean的集合。


ContentDTO的映射文件

由于不需要反向查詢,因而注釋了該屬性。

ContentDTO的映射文件

由于content是一個集合,而photo也是一個集合,類似于多對多,此處的查詢方法使用的是聯(lián)合查詢,否則會報錯。

此處的注釋是另一種實現(xiàn),該方式將在下面進行介紹。


PhotoDTO的映射配置


PhotoDTO的映射文件

測試類:


測試類代碼

首先獲取類加載器的輸入流從配置文件中讀取mybatis配置,然后獲取session(獲取session時的參數(shù)表示采用自動提交事務(wù)的方式,不推薦!)。

調(diào)用selectOne方法,第一個參數(shù)為對應(yīng)JavaBean的namespace值 + "." + <select>的id值,第二個參數(shù)為其一參數(shù)方法的入?yún)ⅰ?/p>

xml配置的另一方式:

? ? ? ? ?將全部配置寫在同一個映射文件中:



由此其余映射文件可不需配置。

開啟緩存:

默認開啟一級緩存,若需要開啟二級緩存,只需在對應(yīng)的映射文件中加入<cache/>標簽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容