MyBatis簡介和入門(MyBatis第一講)

一.介紹

 MyBatis是一個優秀的持久層框架,它對jdbc的操作數據庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如註冊驅動、創建connection、創建statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼。

Mybatis通過xml或註解的方式將要執行的各種statementstatementpreparedStatemntCallableStatement)配置起來,並通過java對象和statement中的sql進行映射生成最終執行的sql語句,最後由mybatis框架執行sql並將結果映射成java對象並返回。

二.jdbc編程步驟:

1、 加載數據庫驅動

2、 創建並獲取數據庫鏈接

3、 創建jdbc statement對象

4、 設置sql語句

5、 設置sql語句中的參數(使用preparedStatement)

6、 通過statement執行sql並獲取結果

7、 sql執行結果進行解析處理

8、 釋放資源(resultSetpreparedstatementconnection)

三. jdbc問題總結如下:

1、 數據庫連接創建、釋放頻繁造成系統資源浪費,從而影響系統性能。如果使用數據庫連接池可解決此問題。

2、 Sql語句在代碼中硬編碼,造成代碼不易維護,實際應用中sql變化的可能較大,sql變動需要改變java代碼。

3、 使用preparedStatement向佔有位符號傳參數存在硬編碼,因爲sql語句的where條件不一定,可能多也可能少,修改sql還要修改代碼,系統不易維護。

4、 對結果集解析存在硬編碼(查詢列名),sql變化導致解析代碼變化,系統不易維護,如果能將數據庫記錄封裝成pojo對象解析比較方便。

四.MyBatis入門

工具:idea

1.需要的jar包 尤其注意mybatis這個包


2.在src同級創建log4j.properties文件(如果此文件不在src目錄下則需要相應配置,在此暫不說明)

3.在src/config目錄下創建核心文件SqlMapConfig.xml


4.實體類 


5.操作數據庫的xml文件 config/ book.xml

說明模糊查詢的sql語句中  爲什麼一定要寫   %${value}%

#{}${}

#{}表示一個佔位符號,通過#{}可以實現preparedStatement向佔位符中設置值,自動進行java類型和jdbc類型轉換

#{}可以有效防止sql注入 #{}可以接收簡單類型值或pojo屬性值 如果parameterType傳輸單個簡單類型值,#{}括號中可以是value或其它名稱。

${}表示拼接sql串,通過${}可以將parameterType 傳入的內容拼接在sql中且不進行jdbc類型轉換

${}可以接收簡單類型值或pojo屬性值,如果parameterType傳輸單個簡單類型值,${}括號中只能是value

6.測試mybatis




7.運行效果


8.總結mybatis好處

1.1. Mybatis解決jdbc編程的問題

1、 數據庫連接創建、釋放頻繁造成系統資源浪費從而影響系統性能,如果使用數據庫連接池可解決此問題。

解決:SqlMapConfig.xml中配置數據連接池,使用連接池管理數據庫鏈接。

2、 Sql語句寫在代碼中造成代碼不易維護,實際應用sql變化的可能較大,sql變動需要改變java代碼。

解決:Sql語句配置在XXXXmapper.xml文件中與java代碼分離。

3、 sql語句傳參數麻煩,因爲sql語句的where條件不一定,可能多也可能少,佔位符需要和參數一一對應。

解決:Mybatis自動將java對象映射至sql語句,通過statement中的parameterType定義輸入參數的類型。

4、 對結果集解析麻煩,sql變化導致解析代碼變化,且解析前需要遍歷,如果能將數據庫記錄封裝成pojo對象解析比較方便。

解決:Mybatis自動將sql執行結果映射至java對象,通過statement中的resultType定義輸出結果的類型。


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