mybatis(一) mybatis介紹 單獨使用jdbc編程中問題總結 mybatis框架原理

1.1 mybatis介紹

mybatis原名是ibatis,是apache的開源項目。ibatis改成mybatis不僅僅是名稱的改變,mybatis在功能上也有升級。

mybatis是一個持久層的框架,mybatis框架和關係數據庫進行交互,將數據持久化到關係數據中。

mybatis目前 在githubhttps://github.com/mybatis/mybatis-3/releases)託管。

 

java中通過jdbc對數據庫,jdbc是一套數據庫訪問接口。mybatis持久層框架對jdbc的封裝。

 

mybatis需要程序員自己編寫sql,對於一些ORM框架(對象關係映射)一般是不需要程序員來編寫sql

mybatis的重點讓程序員自己去靈活掌握sql要對 sql進行優化比較容易讓程序員自己掌握

mybatis同時也對jdbc訪問數據庫的過程 進行了封裝,對創建connection、創建statement、手動設置參數、結果集檢索等進行封裝。

 

mybatis可以通過 xml或註解(不推薦)將statement進行配置,主要完成兩個重要核心 功能:

1、輸入映射,將java對象映射到statement中即sql語句的輸入參數。 

2、輸出映射,將sql語句執行的結果映射成java對象。


單獨使用jdbc編程中問題總結

目的:

1mybatis等持久層框架都是對jdbc的封裝,爲了更好的去學習mybatis,對單獨使用jdbc編程中問題進行總結。

2、企業開發中要進行技術選型,對於小型 的項目來說,單獨使用jdbc或對 jdbc簡單的封裝也在技術選型範圍考慮之內。企業在技術選型主要考慮人力資源等,以節省成本及創建利益最大化爲目標。

 

問題總結:

 

1、程序中存在硬編碼(數據驅動加載,創建數據連接、sql語句),不利於系統維護。

設想解決硬編碼:可以sql語句等信息配置在xml中。

 

2、數據庫連接使用時打開不時立即關閉,頻繁開關連接對數據庫資源是一種浪費。

設想解決方案:使用數據庫連接池。

 

3、向preparedStatement設置參數時 將參數下標 號(從1開始)硬編碼在代碼並且將向佔位符號設置的參數也硬編碼了

設想解決方案:可以自動通過程序將java類型對象映射到preparedStatement中。(輸入參數)

 

4、從Resultset中取出結果集進行遍歷,將列名硬編碼

設想解決方案:可以自動通過程序將sql查詢結果集映射到時java對象中,自動完成將sql查詢的列值構造成一個java對象。(輸出參數)

 

mybatis框架原理



1SqlMapConfig.xmlmybatis全局配置文件,名稱不固定的。

配置了:數據源、事務等運行環境,最重要的是配置mybatis運行所需要的一些配置(Mapper.xml映射配置、全局運行參數、別名。。。) 

mybatis運行先找SqlMapConfig.xml,由SqlMapConfig.xmlMapper.xml映射配置。 

Mapper.xmlmybatis的映射文件,配置了sql語句及sql 語句輸入參數類型、及sql語句結果集所映射的類型

mapper.xml中配置了statement(支持各種statement)了。

 

2SqlSessionFactory,通過SqlMapconfig.xml等配置文件構造 一個會話工廠對象,要操作數據庫通過SqlSessionFactory創建SqlSession會話。

作用:創建SqlSession會話

  

3SqlSessionmybatis操作數據庫使用的會話接口,定義了操作數據庫方法(添加、刪除、修改、更新)

SqlSession是一個接口,是一個面向程序員的接口。

 

4Executor,是一個接口,是一個操作數據庫的底層接口,其實現類有基本執行器、緩存執行器兩種

SqlSession需要通過Executor操作數據庫。

 

5MappedStatement   mybatis底層封裝對象,封裝了sql語句、輸入參數類型、輸出結果類型等信息

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章