一 Mybatis概述&與Hibernate的區別&CRUD
Mybatis是類似Hibernate的ORM持久層框架
為什麽學習Mybatis?
1 是目前國內主流的持久層框架,面向sql(相較於Hibernate,Mybatis一定要用sql)
2 Hibernate學習門檻不低,要精通門檻更高(在於如何設計O/R映射,性能和對象模型之間取得平衡,怎樣用好Hibernate緩存與數據加載策略)
3 sql優化方面,Hibernate的查詢會將表中的所有字段查詢出來,會有性能消耗。如果自己寫sql語句進行查詢,則破壞了Hibernate開發的簡潔性。
如果有個查詢要關聯多張表,比如5張表,10張表,而我們只取其中幾張表的部分字段,這時用Hibernate就會顯得非常力不從心,後續維護也令人發狂。
JDBC存在的問題
1 頻繁的創建和打開,關閉數據庫,太消耗資源
2 sql語句存在硬編碼,不利於維護
3 sql參數設置硬編碼,不利於維護
4 結果集獲取與遍歷復雜,存在硬編碼,不利於維護,期望能夠查詢後返回一個java對象
Mybatis介紹:
Mybatis本是Apache的一個開源項目iBatis.是面向sql的持久層框架,對jdbc進行了封裝。
開發中,可以只專註於sql語句本身的拼裝,其他復雜過程交給MyBatis完成
MyBatis入門:
- 根據用戶ID查詢用戶信息
- 根據用戶名查找用戶列表
- 添加用戶
- 修改用戶
- 刪除用戶
工程搭建:
- 導入依賴jar包
- 配置SqlMapConfig.xml
- 配置log4j.properties
- pojo
- 配置sql查詢映射文件
- 加載映射文件
包結構:config為Source文件,與src相同
導入依賴jar包
配置SqlMapConfig.xml映射文件,映射加載:項目名/文件名 , 默認在config文件下,mybatis包下加載
配置log4j.properties,輸出到控制臺
pojo:與Hibernate的domain相同,提供屬性的getset方法
配置sql查詢映射文件 user.xml , namesapce:命名空間, select id 等 見下圖
根據用戶ID查詢用戶信息:
- 編寫sql語句
- 配置關系映射
- 單元測試
根據用戶名查找用戶列表
- 編寫sql語句
- 配置關系映射
- 單元測試
方式一:手動在sql語句裏面設置查詢,#{name}
方式二:直接在user.xml中設置,${}是字符串拼接指令,如果入參為普通數據類型,括號內只能寫value
一:
映射:
單元測試:
二:${}是字符串拼接指令,如果入參為普通數據類型,括號內只能寫value
單元測試:
添加用戶
映射:
單元測試:如果不想手動提交事務,設置openSession(true)
一 Mybatis概述&與Hibernate的區別&CRUD