MyBatis 是支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架。javascript
MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。php
MyBatis可使用簡單的XML或註解用於配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄.html
原是apache的一個開源項目iBatis, 2010年6月這個項目由apache software foundation 遷移到了google code,隨着開發團隊轉投Google Code旗下,ibatis3.x正式改名爲Mybatis ,代碼於2013年11月遷移到Github(下載地址見後)。java
iBATIS一詞來源於「internet」和「abatis」的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)mysql
MyBatis是一個半自動化的持久化層框架。web
jdbc編程---當咱們使用jdbc持久化的時候,sql語句被硬編碼到java代碼中。這樣耦合度過高。代碼不易於維護。在實際項目開發中會常常添加sql或者修改sql,這樣咱們就只能到java代碼中去修改。sql
Hibernate和JPA數據庫
長難複雜SQL,對於Hibernate而言處理也不容易apache
內部自動生產的SQL,不容易作特殊優化。編程
基於全映射的全自動框架,javaBean存在大量字段時沒法只映射部分字段。致使數據庫性能降低。
對開發人員而言,核心sql仍是須要本身優化
sql和java編碼分開,功能邊界清晰,一個專一業務、一個專一數據。
可使用簡單的XML或註解用於配置和原始映射,將接口和Java的POJO映射成數據庫中的記錄。成爲業務代碼+底層數據庫的媒介
SqlSession的使用範圍
- SqlSession中封裝了對數據庫的操做,如:查詢、插入、更新、刪除等。
- SqlSession經過SqlSessionFactory建立。
- SqlSessionFactory是經過SqlSessionFactoryBuilder進行建立。
SqlSessionFactoryBuilder
SqlSessionFactoryBuilder用於建立SqlSessionFacoty,SqlSessionFacoty一旦建立完成就不須要SqlSessionFactoryBuilder了,由於SqlSession是經過SqlSessionFactory建立的。因此能夠將SqlSessionFactoryBuilder當成一個工具類使用,最佳使用範圍是方法範圍即方法體內局部變量。
SqlSessionFactory
SqlSessionFactory是一個接口,接口中定義了openSession的不一樣重載方法,SqlSessionFactory的最佳使用範圍是整個應用運行期間,一旦建立後能夠重複使用,一般以單例模式管理SqlSessionFactory。
SqlSession
SqlSession是一個面向用戶的接口,sqlSession中定義了數據庫操做方法。
每一個線程都應該它本身的SqlSession實例。SqlSession的實例不能共享使用,它也是線程不安全的。所以最佳的範圍是請求或方法範圍。絕對不能將SqlSession實例的引用放在一個類的靜態字段或實例字段中。
建立一個java工程
導 入 需 要 的 jar 包:
不調用接口方法,直接映射到xml文件中!
配置文件代碼獲取方法
流程圖解:
映射關係圖解:
- JavaBean對象是 User
- Mapper接口的名稱是: UserMapper
- sql語句的配置文件命名: UserMapper.xml
- JavaBean對象是 Book
- Mapper接口的名稱是: BookMapper
- sql語句的配置文件命名: BookMapper.xml
一、名稱空間必須是接口的全類名
二、方法名必須與id值一致
三、parameterType必須與方法參數類型一致
四、resultType必須與方法返回值一致(是指javaBean對象)