Mybatis
1.導包:一個主包,和其他的依賴包
2.編寫配置文件:主配置文件和映射文件,在將映射文件加入到主配置文件
[圖片上傳中。。。(1)]
[圖片上傳中。。。(2)]
[圖片上傳中。。。(3)]
基本的CRUD
[圖片上傳中。。。(4)]
[圖片上傳中。。。(5)]
采用注解的方式:
[圖片上傳中。。。(6)]
[圖片上傳中。。。(7)]
老方式:
[圖片上傳中。。。(8)]
幾個特殊類的生命周期
SqlSessionFactoryBuilder:創建好SqlSessionFactory之后,它的使命就完成了
SqlSessionFactory:單例
SqlSession:通過finally來關閉session
一般將獲得sqlsession的方式生成一個單例的工具類
[圖片上傳中。。。(9)]
或者直接用一類的方法來讀取配置文件
讀取配置文件的配置<properties resource="jdbc.properties"/>
[圖片上傳中。。。(10)]
設置別名:
[圖片上傳中。。。(11)]
[圖片上傳中。。。(12)]
[圖片上傳中。。。(13)]
處理表字段和對象屬性不一致時,和模糊查詢的方法:
[圖片上傳中。。。(14)]
傳遞多個參數:
1.使用map傳參數,在通過方法參數直接將賦值之后的map傳進來,然后在sql語句中直接去map中的key
即可取出(測試程序,創建map,然后查詢)
[圖片上傳中。。。(15)]
2.采用注解的方式傳參數
[圖片上傳中。。。(16)]
采用param的注解取傳來的值
[圖片上傳中。。。(17)]
3.采用采用javabean的方式
[圖片上傳中。。。(18)]
sql片段:就是把相同的一段sql語句抽取出來
[圖片上傳中。。。(19)]
[圖片上傳中。。。(20)]
動態表格技術
[圖片上傳中。。。(21)]
[圖片上傳中。。。(22)]
就是在Var對象里面設置一個String的屬性,再把表字段set進去,需要的時候在取出來
insert:主鍵回填,插入值后再獲取其主鍵
delete,update都一樣
就是在添加完user之后可以用get方法獲取主鍵值
[圖片上傳中。。。(23)]
[圖片上傳中。。。(24)]
動態sql:
解決大量拼裝SQL的工作
if:需求:我們現在做用戶查詢,有可能帶用戶名,有可能不帶查詢的時候,給了不給username的值
就是說如果要進行查詢,那么先會判斷你傳過來的這個對象里面有沒有這個屬性賦值,如果判斷不為空
那就就是說屬性里面有值,那么sql語句就會將條件判斷的sql語句拼接在上面進行查詢,反之不進行拼接,當然如果有多個參數,再在下面寫if即可
[圖片上傳中。。。(25)]
where:替代我們sql語句的where 1=1
[圖片上傳中。。。(26)]
trim:替換的作用(替換sql語句)
把sql語句中的and覆蓋掉,換成where
[圖片上傳中。。。(27)]
choose、when、otherwise多條件查詢,多條件查詢的時候只要滿足一個條件就不再向下執行了
還是取決于里面有沒有賦值
[圖片上傳中。。。(28)]
set 假如一個表有多個字段,但我只需要更新需要更新的字段
方法的參數列表傳遞一個對象進來,需要哪個字段的更新就更新哪個
[圖片上傳中。。。(29)]
foreach主要是做批量刪除或者修改
形參列表傳參數時傳一個數組
[圖片上傳中。。。(30)]
采用集合的方式
[圖片上傳中。。。(31)]
采用map的方式
value可以是數組和集合等
[圖片上傳中。。。(32)]
[圖片上傳中。。。(33)]
resultMap結果集映射
比如上面,我們遇到的數據表字段和類屬性不一致的情況,這個時候,我們可以用resultMap來做對應的映射關系(只能在select里面使用resultMap)
[圖片上傳中。。。(34)]
在使用的時候用parameterType調用上面的結果集,因為結果集里面有返回值類型,所以在select里面不用在寫返回值類型
[圖片上傳中。。。(35)]
使用枚舉把屬性字段變成數字存儲起來,例如在程序中sex為靜態常量,在數據庫中為數字,取出來又是常量
創建枚舉類
[圖片上傳中。。。(36)]
填充數據
[圖片上傳中。。。(37)]
存入數據庫時字段后面加上這個
[圖片上傳中。。。(38)]
取字段時也是這樣,在結果集里面配置一下,取出來就是靜態常量
[圖片上傳中。。。(39)]
級聯:
一對一的配置方式(是在user里面持有card的對象,card持有一個外鍵)
[圖片上傳中。。。(40)]
配置完了還得調用
[圖片上傳中。。。(41)]
采用這種繼承的方式來進行配置:
[圖片上傳中。。。(42)]
[圖片上傳中。。。(43)]
一對多的配置:
[圖片上傳中。。。(44)]
[圖片上傳中。。。(45)]