mybatis執行過程
1、配置mybatis的配置文件,SqlMapConfig.xml(名稱不固定)
2、通過配置文件,加載mybatis運行環境,創建SqlSessionFactory會話工廠
SqlSessionFactory在實際使用時按單例方式管理
3、通過SessionFactory創建SqlSession
SqlSession是一個面向用戶接口(提供操作數據庫方法),實現對象是線程不安全的,建議SqlSession應用場合在方法體內
4、調用SqlSession的方法去操作數據
如果需要提交事務,需要執行SqlSession的commit()方法
5、釋放資源,關閉SqlSession
mybatis開發dao的方法
1、原始dao的方法
- 需要程序員編寫dao接口和實現類
- 需要在dao實現類中注入一個SqlSessionFactory
2、mapper代理開發方法(建議使用)
只需要程序員編寫mapper接口(就是dao接口)
程序員在編寫mapper.xml(映射文件)和mapper.java需要遵循一些開發規範:
- 1)在mapper.xml中namespace就是mapper.java得類全路徑
- 2)mapper.xml中statement的id和mapper.java中的方法名一致
- 3)mapper.xml中statement的parameterType指定輸入參數的類型和mapper.java的方法輸入參數類型一致
- 4)mapper.xml中statement的resultType指定輸出結果的類型和mapper.java的返回值類型一致
輸入映射
parameterType:
指定輸入類型可以是簡單類型、pojo、hashmap
對於綜合查詢,建議parameterType使用包裝的pojo,有利於系統擴展
輸出映射
resultType:
查詢到的列名和resultType指定的pojo的屬性名一致,才能映射成功
resultMap:
可以通過resultMap完成一些高級映射
如果查詢到的列名和映射的pojo的屬性名不一致時,通過resultMap設置列名和屬性名之間的對應關係(映射關係),可以完成映射
高級映射:
- 將關聯查詢的列映射到一個pojo屬性中(一對一)
- 將關聯查詢的列映射到一個List中(一對多)
動態SQL
- if判斷(掌握)
- where
- foreach
- sql片段(掌握)