更新時(shí)間:2018年12月13日14時(shí)49分 來(lái)源:傳智播客 瀏覽次數(shù):
一:MyBatis整體架構(gòu)
1.配置文件
全局配置文件:mybatis-config.xml作用:配置數(shù)據(jù)源,引入映射文件
映射文件:XxMapper.xml 作用:配置sql語(yǔ)句、參數(shù)、結(jié)果集封裝類型等
2.SqlSessionFactory作用:獲取SqlSession
通過(guò)new SqlSessionFactoryBuilder().build(inputStream)來(lái)構(gòu)建,inputStream:讀取配置文件的IO流
3.SqlSession作用:執(zhí)行CRUD操作
4.Executor
執(zhí)行器,SqlSession通過(guò)調(diào)用它來(lái)完成具體的CRUD它是一個(gè)接口,提供了兩種實(shí)現(xiàn):緩存的實(shí)現(xiàn)、數(shù)據(jù)庫(kù)的實(shí)現(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 : 主鍵對(duì)應(yīng)的屬性名
2.update
3.select
4.delete
7.parameterType 參數(shù)
parameterType有三種類型的輸入?yún)?shù):
1.基本數(shù)據(jù)類型
2.hashMap
3.pojo包裝類
hashMap類型通過(guò)#{key}或者${key},復(fù)雜類型通過(guò)${key.屬性名}或者#{key.屬性名}
接收參數(shù)兩種方式:
1.#{} : 預(yù)編譯
2.${} : 非預(yù)編譯 sql拼接,不能防止sql注入
${}用法:
使用${} 去接收參數(shù)信息,在一個(gè)參數(shù)時(shí),默認(rèn)情況下必須使用${value}獲取參數(shù)值,
#{}用法:
#{} 只是表示占位,與參數(shù)的名字無(wú)關(guān),如果只有一個(gè)參數(shù),可以使用任意參數(shù)名接收參數(shù)值,會(huì)自動(dòng)對(duì)應(yīng)。
推薦使用@Param注解指定參數(shù)名:
#{參數(shù)名},${參數(shù)名}
#{}接收多個(gè)參數(shù):
1.默認(rèn)規(guī)則獲取參數(shù){0,1,param1,param2}
2.使用@Param注解指定參數(shù)名
如果沒(méi)指定參數(shù)名,用#{0},#{1}或者#{param1},#{param2}
注意:
1.單個(gè)參數(shù)時(shí),#{}與參數(shù)名無(wú)關(guān)的。
2.多個(gè)參數(shù)時(shí),#{} ${}與參數(shù)名(@Param)有關(guān)。
什么時(shí)候需要加@Param注解?什么時(shí)候不加?
單個(gè)參數(shù)不加,多個(gè)參數(shù)加
終極解決方案:都加。
8.ResultMap 自定義映射
type : 結(jié)果集的封裝類型 , id : 唯一標(biāo)識(shí) , autoMapping : 開啟自動(dòng)匹配,如果開啟了駝峰匹配,就以駝峰匹配形式
id : 指定主鍵映射 ,不要省略,提高性能
result : 其他非主鍵字段 , column : 表中的字段名 , property : 對(duì)應(yīng)實(shí)體類屬性名
首發(fā):http://java.itcast.cn
北京校區(qū)