Mybatis三
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三