4、配置決議
1、核心組態檔
-
mybatis-config.xml
-
MyBatis 的組態檔包含了會深深影響 MyBatis 行為的設定和屬性資訊,
configuration(配置) properties(屬性) settings(設定) typeAliases(型別別名) typeHandlers(型別處理器) objectFactory(物件工廠) plugins(插件) environments(環境配置) environment(環境變數) transactionManager(事務管理器) dataSource(資料源) databaseIdProvider(資料庫廠商標識) mappers(映射器)
2、環境配置(environments)
MyBatis 可以配置成適應多種環境
不過要記住:盡管可以配置多個環境,但每個 SqlSessionFactory 實體只能選擇一種環境,
學會使用配置多套運行環境!
Mybatis默認的事務管理器就是 JDBC , 連接池 : POOLED
事務管理器(transactionManager)
在 MyBatis 中有兩種型別的事務管理器(也就是 type="[JDBC|MANAGED]"):
JDBC – 這個配置直接使用了 JDBC 的提交和回滾設施,它依賴從資料源獲得的連接來管理事務作用域,
MANAGED – 這個配置幾乎沒做什么,它從不提交或回滾一個連接,而是讓容器來管理事務的整個生命周期(比如 JEE 應用服務器的背景關系), 默認情況下它會關閉連接,
有三種內建的資料源型別(也就是 type="[UNPOOLED|POOLED|JNDI]")
UNPOOLED– 這個資料源的實作會每次請求時打開和關閉連接,
POOLED– 這種資料源的實作利用“池”的概念將 JDBC 連接物件組織起來,避免了創建新的連接實體時所必需的初始化和認證時間, 這種處理方式很流行,能使并發 Web 應用快速回應請求,
JNDI – 這個資料源實作是為了能在如 EJB 或應用服務器這類容器中使用,容器可以集中或在外部配置資料源,然后放置一個 JNDI 背景關系的資料源參考
3、屬性(properties)
我們可以通過properties屬性來實作參考組態檔
這些屬性都是可外部配置且可動態替換的,既可以在典型的 Java 屬性檔案中配置,亦可通過 properties 元素的子元素來傳遞,【db.properties】

撰寫一個組態檔
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=tashuo955
在核心組態檔中引入
<!--引入外部組態檔-->
<properties resource="db.properties">
<property name="username" value="https://www.cnblogs.com/loading955/p/root"/>
<property name="pwd" value="https://www.cnblogs.com/loading955/p/11111"/>
</properties>
- 可以直接引入外部檔案
- 可以在其中增加一些屬性配置
- 如果兩個檔案有同一個欄位,資料的參考優先使用外部properties檔案的資訊==先讀取property內部的然后外部資源會覆寫已有屬性
4、型別別名(typeAliases)
- 型別別名是為 Java 型別設定一個短的名字,
- 存在的意義僅在于用來減少類完全限定名的冗余,
<!--可以給物體類起別名-->
<typeAliases>
<typeAlias type="com.loading.pojo.User" alias="User"/>
</typeAliases>
也可以指定一個包名,MyBatis 會在包名下面搜索需要的 Java Bean,比如:
掃描物體類的包,它的默認別名就為這個類的 類名,首字母小寫!
<!--可以給物體類起別名-->
<typeAliases>
<package name="com.loading.pojo"/>
</typeAliases>
在物體類比較少的時候,使用第一種方式,
如果物體類十分多,建議使用第二種,
第一種可以DIY別名,第二種則·不行·,如果非要改,需要在物體上增加注解
@Alias("user")
public class User {}
5、設定
這是 MyBatis 中極為重要的調整設定,它們會改變 MyBatis 的運行時行為,


6、其他配置
- typeHandlers(型別處理器)
- objectFactory(物件工廠)
- plugins插件
- mybatis-generator-core
- mybatis-plus
- 通用mapper
7、映射器(mappers)
MapperRegistry:注冊系結我們的Mapper檔案;
方式一: 【推薦使用】
<!--每一個Mapper.XML都需要在Mybatis核心組態檔中注冊!-->
<mappers>
<mapper resource="com/loading/dao/UserMapper.xml"/>
</mappers>
方式二:使用class檔案系結注冊
<!--每一個Mapper.XML都需要在Mybatis核心組態檔中注冊!-->
<mappers>
<mapper />
</mappers>
注意點:
- 介面和他的Mapper組態檔必須同名!
- 介面和他的Mapper組態檔必須在同一個包下!
方式三:使用掃描包進行注入系結
<!--每一個Mapper.XML都需要在Mybatis核心組態檔中注冊!-->
<mappers>
<package name="com.loading.dao"/>
</mappers>
注意點:
- 介面和他的Mapper組態檔必須同名!
- 介面和他的Mapper組態檔必須在同一個包下!
8、生命周期和作用域

生命周期,和作用域,是至關重要的,因為錯誤的使用會導致非常嚴重的并發問題,
SqlSessionFactoryBuilder:
- 一旦創建了 SqlSessionFactory,就不再需要它了
- 區域變數
SqlSessionFactory:
- 說白了就是可以想象為 :資料庫連接池
- SqlSessionFactory 一旦被創建就應該在應用的運行期間一直存在,沒有任何理由丟棄它或重新創建另一個實體,
- 因此 SqlSessionFactory 的最佳作用域是應用作用域,
- 最簡單的就是使用單例模式或者靜態單例模式,
SqlSession
- 連接到連接池的一個請求!
- SqlSession 的實體不是執行緒安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域,
- 用完之后需要趕緊關閉,否則資源被占用!

這里面的每一個Mapper,就代表一個具體的業務!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/166744.html
標籤:Java
