1. 程式人生 > >mybatis的學習總結(一)

mybatis的學習總結(一)

mybatis是什麼?用來做什麼的?

mybatis是一門持久層框架,mybatis是一個不完全的ORM框架。sql語句需要程式設計師自己去編寫,這樣就大大提高了寫sql的靈活性,可以盡情發揮大牛們的技術,

但是mybatis也是有關係對映的(輸入引數對映和輸出結果對映)。

mybatis入門門檻不高,學習成本低,可以讓我們把所有的精力都放在sql語句上和業務邏輯上,對sql語句優化更加的方便,sql的放在mybatis的xml中好找;

適用與需求變化較多的專案,例如電商專案

mybatis框架的執行流程:

1、配置mybatis的配置檔案,sqlConfig.xml(這個配置檔案的名字不固定和po名字有關聯)

2、通過配置檔案,載入mybatis執行環境,建立SqlSessionFactory會話工廠:

SqlSessionFactory實際中使用時按單例方式。

3、通過SqlSessionFactory建立SqlSession:

SqlSession是一個面向使用者的介面(提供操作資料庫方法),實現物件是執行緒不安全的,建議sqlSession應用場景在方法體內,這也就是為什麼連線資料庫和建立SqlSessionFactory工廠的初始化都會放到init()j初始方法中或者靜態程式碼塊中,首先初始化,而SqlSession的建立在方法體內,即SqlSession的生命週期和方法的存活週期一樣;

4.呼叫SqlSession的方法去操作資料:

如果需要提交事務,需要執行SqlSession的commit()方法,例如:新增、修改、刪除;如果不需要事務就可以不用呼叫commit(),例如檢視

5.釋放資源,關閉SqlSession,呼叫close()

注意:資源的釋放在java中使很重要的,資源不釋放可能會是系統引起:資源死鎖、記憶體洩露等問題。

mybatis開發dao方法:

1.原始dao的方法

需要程式設計師編寫dao介面和實現

需要dao實現類中注入一個SqlSessionFactory工廠,進行操作資料。

2.mapper代理開發方法(建議使用)

只需要程式設計師編寫mapper介面(就是dao介面)

不過程式設計師需要在編寫mapper.xml(對映檔案)和mapper.java需要遵循一個開發規範:

1.mapper.xml中namespace就是mapper.java的類全路徑

2.maaper.xml中statement的id和mapper.java中方法名一致

3.mapper.xml中statement的parameterType指定輸入的型別和mapper.java的方法輸入引數型別一致

4.mapper.xml中statement的resultType指定輸出結果的型別和mapper.java的方法返回值型別一致

sqlConfig.xml配置檔案:可以配置properties屬性、別名、mapper載入等

輸入對映:

parameterType:指定輸入引數型別可以簡單型別、pojo、hashmap等,對於綜合查詢,建議parameterType使用包裝的pojo型別,這樣有利於後期系統的維護和擴充套件。

輸出對映:

resultType:查詢到的列名和resultType指定的pojo的屬性名一致了才能對映成功。

resultMap:可以通過resultMap完成一些高階對映:

如果查詢到的列名和對映對應的pojo的屬性不一致時,我們可以通過resultMap設定列名和屬性名之間的對應關係(對映關係),通過在xml中完成對映配置。

高階對映:1.將關聯查詢的列對映到一個pojo屬性中(一對一對映)。

    2.將關聯查詢的列對映到一個List<pojo>中(一對多對映)。

動態sql的使用(重點):

if判斷、where、foreach、sql片段,在xml配置檔案中的使用(具體動態sql的各自使用可以百度)

以上為小弟學習中的一些總結,有什麼不對的請各位大神指教,在此敬禮!