1. 程式人生 > >Mybatis三

Mybatis三

sql setting table efault pos 同時存在 語句 存在 class

1.session.commit()為什麽會引起事物的提交?

  先ctrl+鼠標左鍵點入commit方法中,然後ctrl+H找到DefaultSqlSession這個類,在這個類中找到如下的方法

技術分享圖片

然後進入技術分享圖片這個方法

這裏有一個邏輯關系表達式,運算的順序是 && || !的順序依次運算得到的結果是true,那麽該方法的返回值是true

技術分享圖片

所以執行器的提交,會引起事務的提交

2.session.close()會引起事務的回滾?(同上述方法相似,一步一步往上一層找,就可以找到答案,看到它底層的代碼)

最終找到

技術分享圖片

可以得到session.close()會引起事務的回滾

3.resultMap結果映射

  在這需要註意的是resultType和resultMap不能同時存在(記住)

  它主要解決了什麽問題呢?

  解決數據庫表中Table中的字段和Java實體類中的字段名稱不一致問題,需要我們手工映射

以查詢語句為例

在小配置中首先添加一個節點<resultMap>

技術分享圖片

在sql語句的節點中resultType屬性要改為resultMap他的值為上面resultMap節點的id的值

技術分享圖片

然後在大配置中也需要添加一個節點<settings>

技術分享圖片

技術分享圖片這個的屬性值有三個:NONE,PARTIAL(默認),FULL4.添加後返回自增列的值

技術分享圖片

技術分享圖片

實現的結果為

技術分享圖片

5.多條件查詢

多條件查詢有兩種方式Map 和 根據索引

首先第一種Map

技術分享圖片

技術分享圖片

技術分享圖片

第二種 根據索引號Index

技術分享圖片

技術分享圖片

技術分享圖片

6.智能標簽

智能標簽有 if where foreach list array

(1)智能標簽if where結合

首先聲明方法在接口中

技術分享圖片

然後再小配置中添加節點

技術分享圖片

最後編寫測試類 測試方法

技術分享圖片

(2)智能標簽foreach array

首先聲明方法在接口中

技術分享圖片

然後再小配置中添加節點

技術分享圖片

最後編寫測試類 測試方法

技術分享圖片

(3)list<Integer>

技術分享圖片

技術分享圖片

技術分享圖片

Mybatis三