後臺回覆“Java”即可獲贈Java學習資料
01
MyBatis框架
MyBatis介紹
一個框架,早期叫做ibatis, 代碼在github。
mybatis是(MyBatis SQL Mapper Framework for Java )(sql映射框架)
sql mapper : sql映射,可以把數據庫表中的一行數據映射爲一個java對象。一行數據可以看做是一個java對象。操作這個對象,就相當於操作表中的數據。
Data Access Objects(DAO) : 數據訪問,對數據庫執行增刪改查。
MyBatis 提供的功能
提供了創建Connection ,Statement, ResultSet的能力 ,不用開發人員創建這些對象了。
提供了執行sql語句的能力,不用你執行sql。
提供了循環sql,把sql的結果轉爲java對象、List集合的能力。
提供了關閉資源的能力,不用你關閉Connection, Statement, ResultSet。
開發人員做的工作
開發人員負責提供sql語句--->MyBatis處理sql--->開發人員得到List集合或者java對象(表中的數據)。
MyBatis的總結概述
mybatis是一個sql映射框架,提供的數據庫的操作能力。增強的JDBC, 使用mybatis讓開發人員集中精神寫sql就可以了,不必關心Connection,Statement,ResultSet 的創建,銷燬,sql的執行。
02
MyBatis對象分析
Resources 類
Resources 類,顧名思義就是資源,用於讀取資源文件。其有很多方法通過加載並解析資源文件,返回不同類型的IO流對象。
SqlSessionFactoryBuilder 類
SqlSessionFactory的創建,需要使用SqlSessionFactoryBuilder對象的build()方法。由於SqlSessionFactoryBuilder對象在創建完工廠對象後,就完成了其歷史使命,即可被銷燬。
所以,一般會將該SqlSessionFactoryBuilder 對象創建爲一個方法內的局部對象,方法結束,對象銷燬。
SqlSessionFactory接口
SqlSessionFactory 接口對象是一個重量級對象(系統開銷大的對象),是線程安全的,所以一個應用 只需要一個該對象即可。創建SqlSession需使用SqlSessionFactory接口的openSession()方法。
SqlSessionFactory 這個接口的實現類是DefaultSqlSessionFactory。這個實現類中有openSession()方法,使用這個接口就是爲了使用這個openSession()方法來獲取SqlSession對象。
SqlSessionFactory作用 :獲取SqlSession對象。
openSession()方法的幾種形式:
➢ openSession(true):創建一個有自動提交功能的 SqlSession
➢ openSession(false):創建一個非自動提交功能SqlSession,需手動提交 。
➢ openSession():無參數獲取的是非自動提交事務的SqlSession對象。
SqlSession接口
SqlSession 接口對象用於執行持久化操作。一個 SqlSession 對應着一次數據庫會話,一次會話以 SqlSession 對象的創建開始,以 SqlSession 對象的關閉結束。SqlSession 接口對象是線程不安全的,所以每次數據庫會話結束前,需要馬上調用其 close()方法,將 其關閉。再次需要會話,再次創建。SqlSession 在方法內部創建,使用完畢後關閉。
SqlSession 接口 : 定義了操作數據的方法。例如 selectOne() 、selectList() 、insert()、update()、delete()、commit()、rollback()。
SqlSession接口的實現類DefaultSqlSession。
03
mybatis動態代理
mybatis根據 dao的方法調用,獲取執行sql語句的信息。mybatis根據你的dao接口,創建出一個dao接口的實現類,並創建這個類的對象。成SqlSession調用方法,訪問數據庫。
就是我們不用在自己創建 StudentDao接口的實現類 StudentDaoImpl由mybatis根據dao接口自己創建出這個實現類,並完成數據的調用。這個時候我們只需要提供接口即可,剩下的交給mybatis。
------------------- End -------------------
往期精彩文章推薦:
歡迎大家點贊,留言,轉發,轉載,感謝大家的相伴與支持
想加入Java學習羣請在後臺回覆【入羣】
萬水千山總是情,點個【在看】行不行
本文分享自微信公衆號 - Java進階學習交流(java_xianghong)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。