《Spring和MyBatis整合》筆記

2021-10-09 10:55:12 字數 2927 閱讀 5374

一、sm框架的整合步驟

1、匯入16個jar包

2、建立dao、service、pojo、test

3、配置mybatis核心檔案

4、配置spring核心配置檔案

(1)配置資料來源

(2)配置sqlsessionfactorybean

(3.1)通過自定義實現類訪問資料庫

配置檔案問題:使用sqlsessiontemplate,先建立sqlsessiontemplate物件,使用構造注入

匯入兩個包jdbc.jar,tx.jar

sql對映檔案的命名空間

3.1.1配置sqlsessiontemplate物件(可選)

3.1.2配置dao實現類

注入sqlsessiontemplate物件 或者 注入sqlsessionfactorybean

注:dao實現類訪問資料的兩種方式

1、在實現類中建立sqlsessiontemplate屬性

2、實現類繼承sqlsessiondaosupport類

(3.2)通過**實現類訪問資料庫

注:如果介面和sql對映檔案在同乙個包下,配置sqlsessionfactorybean時可以省略sql對映檔案路徑的配置,但是介面名必須和sql對映檔案的名稱一致

注:如果配置檔案中只有乙個sqlsessionfactorybean,不需要顯示指定所依賴的sqlsessionfactory

(4)配置service實現類

注入dao物件

二、spring配置事務

1、使用xml配置

注:rollback-for="exception" 事務預設執行時以上時回滾,可以設定父類

@override

public int adduser(listusers) throws exception {

int result=0;

for (int i=0;i2、使用註解配置

注:proxy-target-class="true"表示可以使用實現類和介面訪問方法,false表示只能使用介面訪問,預設為false

技術分析之事務的回顧

1. 事務:指的是邏輯上一組操作,組成這個事務的各個執行單元,要麼一起成功,要麼一起失敗!

2. 事務的特性

* 原子性

* 一致性

* 隔離性

* 永續性

技術分析之spring框架的事務管理相關的類和api

1. platformtransactionmanager介面 -- 平台事務管理器.(真正管理事務的類)。

該介面有具體的實現類,根據不同的持久層框架,需要選擇不同的實現類!

2. transactiondefinition介面 -- 事務定義資訊.(事務的隔離級別,傳播行為,超時,唯讀)

3. transactionstatus介面 -- 事務的狀態

4. 總結:上述物件之間的關係:平台事務管理器真正管理事務物件.

根據事務定義的資訊transactiondefinition 進行事務管理,

在管理事務中產生一些狀態.將狀態記錄到transactionstatus中

5. platformtransactionmanager介面中實現類和常用的方法

1. 介面的實現類

* 如果使用的spring的jdbc模板或者mybatis框架,需要選擇datasourcetransactionmanager實現類

* 如果使用的是hibernate的框架,需要選擇hibernatetransactionmanager實現類

2. 該介面的常用方法

* void commit(transactionstatus status)

* transactionstatus gettransaction(transactiondefinition definition)

* void rollback(transactionstatus status)

6. transactiondefinition

1. 事務隔離級別的常量

* static int isolation_default -- 採用資料庫的預設隔離級別

* static int isolation_read_uncommitted

* static int isolation_read_committed

* static int isolation_repeatable_read

* static int isolation_serializable

2. 事務的傳播行為常量(不用設定,使用預設值)

* 先解釋什麼是事務的傳播行為:解決的是業務層之間的方法呼叫!!

* propagation_required(預設值) -- a中有事務,使用a中的事務.如果沒有,b就會開啟乙個新的事務,將a包含進來.(保證a,b在同乙個事務中),預設值!!

* propagation_supports -- a中有事務,使用a中的事務.如果a中沒有事務.那麼b也不使用事務.

* propagation_mandatory -- a中有事務,使用a中的事務.如果a沒有事務.丟擲異常.

* propagation_requires_new(記)-- a中有事務,將a中的事務掛起.b建立乙個新的事務.(保證a,b沒有在乙個事務中)

* propagation_not_supported -- a中有事務,將a中的事務掛起.

* propagation_never -- a中有事務,丟擲異常.

* propagation_nested(記) -- 巢狀事務.當a執行之後,就會在這個位置設定乙個儲存點.如果b沒有問題.執行通過.如果b出現異常,執行客戶根據需求回滾(選擇回滾到儲存點或者是最初始狀態)

二 mybatis和spring結合

配置 xmlns xmlns context xmlns p xmlns aop xmlns tx xmlns xsi xsi schemalocation spring beans 4.0.xsd spring context 4.0.xsd spring aop 4.0.xsd spring t...

spring和mybatis的整合

若要整合spring和mybatis就需要乙個外掛程式即mybatis spring x.x.x.jar。具體的安裝如下所示 org.mybatis mybatis spring x.x.x 要和spring一起使用 mybatis,還需要在 spring 應用上下文中定義至少兩樣東西 乙個 sql...

Spring和Mybatis 整合 錯誤

建立sqlsessionfactory sqlsessionfactory class org.mybatis.spring.sqlsessionfactorybean datasource ref datasource property property bean 連線池物件的配置 datasou...