Mybatis的配置解析

如下關於配置的學習在Mybatis官網能夠找到,以下圖:html

image-20210313170628334

一、核心配置文件

  • mybatis-config.xmljava

  • Mybatis的配置文件包含了會深深影響Mybatis行爲的設置和屬性信息mysql

configuration(配置)
properties(屬性)
settings(設置)
typeAliases(類型別名)
typeHandlers(類型處理器)
objectFactory(對象工廠)
plugins(插件)
environments(環境配置)
environment(環境變量)
transactionManager(事務管理器)
dataSource(數據源)
databaseIdProvider(數據庫廠商標識)
mappers(映射器)

二、環境配置(environments)

Mybatis能夠配置成適應多種環境sql

不過要記住:儘管能夠配置多個環境,但每一個SqlSessionFactory實例只能選擇一種環境。數據庫

學會使用配置多套運行環境!緩存

Mybatis默認的事務管理器就是JDBC,鏈接池:POOLED ,以下:mybatis

image-20210313171120630

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${pwd}"/>
            </dataSource>
        </environment>        
</environments>

三、屬性(properties)

咱們能夠經過properties屬性來實現引用配置文件app

這些屬性都是可外部配置且可動態替換的,既能夠在典型的java屬性文件中配置,亦可經過properties元素的子元素來傳遞。ide

經過這樣引入外部文件的方式配置,Mybatis優先取外部配置文件的值(如本例的db.properties)而不會取properties元素子元素配置的參數的值學習

以下圖:

編寫一個db.properties配置文件

image-20210313171755736

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username=root
pwd=123456

在覈心配置文件中引入

image-20210313171846561

<!--引入外部配置文件-->
<properties resource="db.properties">
    <property name="username" value="root"/>
    <property name="pwd" value="111111"/>
</properties>

最後經過以下方式取外部文件配置參數的值:

<dataSource type="POOLED">
    <property name="driver" value="${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${pwd}"/>
</dataSource>

小結:

  • 能夠直接引入外部文件
  • 能夠在覈心配置文件的properties標籤中增長一些屬性配置
  • 若是兩個文件有同一個配置參數,優先使用外部配置文件的!

注:這裏補充一個知識:在xml中,全部的標籤均可以規定其順序

image-20210313172056432

四、類型起別名(typeAliases)

  • 類型別名是爲java類型設置一個短的名字。

  • 存在的意義僅在於用來減小類徹底限定名的冗餘。

有幾種方式:

  1. 首先第一種方式直接對某個類起別名:
<!--能夠給實體類起別名-->
<typeAliases>
  <typeAlias type="com.kuang.pojo.User" alias="User"/>
</typeAliases>

image-20210313174225458

2.第二種能夠掃描一個包名:

<!--也能夠經過掃描包給包下面的全部類起別名,別名爲類名首字母小寫,可是通過測試,首字母大小寫均可以-->
<typeAliases>
    <package name="com.kuang.pojo"/>
</typeAliases>

image-20210313173909243

最後在mapper.xml中使用別名就好了以下:

<!--select查詢語句-->
<select id="getUserList" resultType="User">
    select * from mybatis.user;
</select>

image-20210313173802348

小結:

​ 在實體類比較少的時候,使用第一種方式,

​ 若是實體類十分多,建議使用第二種。

第一種能夠DIY(自定義),第二種則【不行】,若是第二種非要自定義別名,須要再在實體上增長註解 ,以下:

//實體類
@Alias("user")
public class User {

image-20210313175352460

Mybatis官網給出來一些常見java類型默認的別名以下圖:

image-20210313175809421

image-20210313175836183

五、設置

這是 MyBatis 中極爲重要的調整設置,它們會改變 MyBatis 的運行時行爲。

重點記住以下途中的三個設置:指定Mybatis的日誌實現、是否開啓緩存、是否懶加載。

image-20210313180306590

image-20210313180409898

六、其餘配置

image-20210313180725289

七、映射器(mappers)

MapperRegistry:註冊綁定咱們的mapper文件;

咱們之後寫都mapper.xml文件都要經過映射器註冊到MapperRegistry。

方式一:

<!--每個mapper.xml都須要在mybatis核心配置文件中註冊!-->
<mappers>
   <mapper resource="com/kuang/dao/UserMapper.xml"/>
</mappers>

image-20210313183130598

方式二:使用class文件綁定註冊

<!--每個mapper.xml都須要在mybatis核心配置文件中註冊!-->
<mappers>
    <mapper class="com.kuang.dao.UserMapper"/>
</mappers>

image-20210313183745508

注意點:

  • 接口和他的mapper.xml必須同名!
  • 接口和他的mapper.xml必須在同一個包下!

方式三:使用掃描包進行綁定

<!--每個mapper.xml都須要在mybatis核心配置文件中註冊!-->
<mappers>
    <package name="com.kuang.dao"/>
</mappers>

image-20210313183954183

注意點(與方式二同樣):

  • 接口和他的mapper.xml必須同名!
  • 接口和他的mapper.xml必須在同一個包下!

這篇文章的源碼在Mybatis-study工程的mybatis-02模塊下!,後面會給出源碼連接

相關文章
相關標籤/搜索