更新時間:2018年12月13日14時49分 來源:傳智播客 瀏覽次數(shù):
一:MyBatis整體架構(gòu)
1.配置文件
全局配置文件:mybatis-config.xml作用:配置數(shù)據(jù)源,引入映射文件
映射文件:XxMapper.xml 作用:配置sql語句、參數(shù)、結(jié)果集封裝類型等
2.SqlSessionFactory作用:獲取SqlSession
通過new SqlSessionFactoryBuilder().build(inputStream)來構(gòu)建,inputStream:讀取配置文件的IO流
3.SqlSession作用:執(zhí)行CRUD操作
4.Executor
執(zhí)行器,SqlSession通過調(diào)用它來完成具體的CRUD它是一個接口,提供了兩種實現(xiàn):緩存的實現(xiàn)、數(shù)據(jù)庫的實現(xiàn)
5.Mapped Statement
在映射文件里面配置,包含3部分內(nèi)容:
具體的sql,sql執(zhí)行所需的參數(shù)類型,sql執(zhí)行結(jié)果的封裝類型
參數(shù)類型和結(jié)果集封裝類型包括3種:
HashMap,基本數(shù)據(jù)類型,pojo
6.xxxMapper.xml映射文件
名稱空間必須改成UserMapper接口的全路徑,StatementId必須和接口方法名一致,結(jié)果集的封裝類型已經(jīng)和方法的返回類型一致
7.mybatisconfig.xml配置文件
講究嚴(yán)格的順序,具體順序遵循文檔的順序:
8.settings參數(shù):
9.類型別名
1.typeAlias
2.package
3.typeHandlers
4.environments
1.default
2.build
5.Mappers 映射
1.resource
2.file
3.class
4.package
6.CRUD標(biāo)簽
1.insert :
useGeneratedKeys : 開啟主鍵的回顯 , true & false
keyColumn : 主鍵的列名
keyProperty : 主鍵對應(yīng)的屬性名
2.update
3.select
4.delete
7.parameterType 參數(shù)
parameterType有三種類型的輸入?yún)?shù):
1.基本數(shù)據(jù)類型
2.hashMap
3.pojo包裝類
hashMap類型通過#{key}或者${key},復(fù)雜類型通過${key.屬性名}或者#{key.屬性名}
接收參數(shù)兩種方式:
1.#{} : 預(yù)編譯
2.${} : 非預(yù)編譯 sql拼接,不能防止sql注入
${}用法:
使用${} 去接收參數(shù)信息,在一個參數(shù)時,默認(rèn)情況下必須使用${value}獲取參數(shù)值,
#{}用法:
#{} 只是表示占位,與參數(shù)的名字無關(guān),如果只有一個參數(shù),可以使用任意參數(shù)名接收參數(shù)值,會自動對應(yīng)。
推薦使用@Param注解指定參數(shù)名:
#{參數(shù)名},${參數(shù)名}
#{}接收多個參數(shù):
1.默認(rèn)規(guī)則獲取參數(shù){0,1,param1,param2}
2.使用@Param注解指定參數(shù)名
如果沒指定參數(shù)名,用#{0},#{1}或者#{param1},#{param2}
注意:
1.單個參數(shù)時,#{}與參數(shù)名無關(guān)的。
2.多個參數(shù)時,#{} ${}與參數(shù)名(@Param)有關(guān)。
什么時候需要加@Param注解?什么時候不加?
單個參數(shù)不加,多個參數(shù)加
終極解決方案:都加。
8.ResultMap 自定義映射
type : 結(jié)果集的封裝類型 , id : 唯一標(biāo)識 , autoMapping : 開啟自動匹配,如果開啟了駝峰匹配,就以駝峰匹配形式
id : 指定主鍵映射 ,不要省略,提高性能
result : 其他非主鍵字段 , column : 表中的字段名 , property : 對應(yīng)實體類屬性名
首發(fā):http://java.itcast.cn