mybatis必知必会一
入門(mén):
1、每個(gè)基于 MyBatis 的應(yīng)用都是以一個(gè) SqlSessionFactory 的實(shí)例為中心的。SqlSessionFactory 的實(shí)例可以通過(guò) SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件或一個(gè)預(yù)先定制的 Configuration 的實(shí)例構(gòu)建出 SqlSessionFactory 的實(shí)例。
2、MyBatis 包含一個(gè)名叫 Resources 的工具類(lèi),它包含一些實(shí)用方法,可使從 classpath 或其他位置加載資源文件更加容易。
3、?XML 頭部的聲明,用來(lái)驗(yàn)證 XML 文檔正確性。environment 元素體中包含了事務(wù)管理和連接池的配置。mappers 元素則是包含一組 mapper 映射器(這些 mapper 的 XML 文件包含了 SQL 代碼和映射定義信息)。
4、SqlSession 完全包含了面向數(shù)據(jù)庫(kù)執(zhí)行 SQL 命令所需的所有方法。
5、依賴(lài)注入框架可以創(chuàng)建線程安全的、基于事務(wù)的 SqlSession 和映射器(mapper)并將它們直接注入到你的 bean 中,因此可以直接忽略它們的生命周期。
6、SqlSessionFactoryBuilder 實(shí)例的最佳作用域是方法作用域。
7、SqlSessionFactory 的最佳作用域是應(yīng)用作用域。
8、每個(gè)線程都應(yīng)該有它自己的 SqlSession 實(shí)例。SqlSession 的實(shí)例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請(qǐng)求或方法作用域。
XML配置:
文檔頂層結(jié)構(gòu):
configuration 配置
- properties 屬性
- settings 設(shè)置
- typeAliases 類(lèi)型別名
- typeHandlers 類(lèi)型處理器
- objectFactory 對(duì)象工廠
- plugins 插件
- environments 環(huán)境
- environment 環(huán)境變量
- transactionManager 事務(wù)管理器
- dataSource 數(shù)據(jù)源
- environment 環(huán)境變量
- databaseIdProvider 數(shù)據(jù)庫(kù)廠商標(biāo)識(shí)
- mappers 映射器
XML映射文件:
SQL 映射文件有很少的幾個(gè)頂級(jí)元素(按照它們應(yīng)該被定義的順序):
- cache?– 給定命名空間的緩存配置。
- cache-ref?– 其他命名空間緩存配置的引用。
- resultMap?– 是最復(fù)雜也是最強(qiáng)大的元素,用來(lái)描述如何從數(shù)據(jù)庫(kù)結(jié)果集中來(lái)加載對(duì)象。
- sql?– 可被其他語(yǔ)句引用的可重用語(yǔ)句塊。
- insert?– 映射插入語(yǔ)句
- update?– 映射更新語(yǔ)句
- delete?– 映射刪除語(yǔ)句
- select?– 映射查詢(xún)語(yǔ)句
1、MyBatis 支持 STATEMENT,PREPARED 和 CALLABLE 語(yǔ)句的映射類(lèi)型,分別代表 PreparedStatement 和 CallableStatement 類(lèi)型。
resultMap
- constructor?- 用于在實(shí)例化類(lèi)時(shí),注入結(jié)果到構(gòu)造方法中
- idArg?- ID 參數(shù);標(biāo)記出作為 ID 的結(jié)果可以幫助提高整體性能
- arg?- 將被注入到構(gòu)造方法的一個(gè)普通結(jié)果
- id?– 一個(gè) ID 結(jié)果;標(biāo)記出作為 ID 的結(jié)果可以幫助提高整體性能
- result?– 注入到字段或 JavaBean 屬性的普通結(jié)果
- association?– 一個(gè)復(fù)雜類(lèi)型的關(guān)聯(lián);許多結(jié)果將包裝成這種類(lèi)型
- 嵌套結(jié)果映射 – 關(guān)聯(lián)可以指定為一個(gè)?resultMap?元素,或者引用一個(gè)
- collection?– 一個(gè)復(fù)雜類(lèi)型的集合
- 嵌套結(jié)果映射 – 集合可以指定為一個(gè)?resultMap?元素,或者引用一個(gè)
- discriminator?– 使用結(jié)果值來(lái)決定使用哪個(gè)?resultMap
- case?– 基于某些值的結(jié)果映射
- 嵌套結(jié)果映射 – 一個(gè)?case?也是一個(gè)映射它本身的結(jié)果,因此可以包含很多相 同的元素,或者它可以參照一個(gè)外部的?resultMap。
- case?– 基于某些值的結(jié)果映射
轉(zhuǎn)載于:https://www.cnblogs.com/jsersudo/p/10362551.html
總結(jié)
以上是生活随笔為你收集整理的mybatis必知必会一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 读《程序是怎样跑起来》第五章有感
- 下一篇: Java多线程和并发(三),Thread