mybatis config


mybatis 配置相關

1、結構目錄以及mybatis-config.xml的標簽屬性

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

數據來源於mybatis官方文檔 https://mybatis.org/mybatis-3/zh/configuration.html

image

2、屬性(properties)

這些屬性可以在外部進行配置,並可以進行動態替換。

<dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
</dataSource>
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username=root
password=root

只需要在在mybatis-config.xml中添加properties標簽即可

<properties resource="database.properties"/>

由於DTD約束了XML的文檔結構,所以標簽應該放在首位

同時也可以在properties標簽的子元素中設置

<properties resource="org/mybatis/example/config.properties">
  <property name="username" value="dev_user"/>
  <property name="password" value="F2Fa3!33TYyg"/>
</properties>

二者並存時以外部引用為准,本文不在做過多贅述

3、environments(環境配置)

MyBatis 可以配置成適應多種環境,這種機制有助於將 SQL 映射應用於多種數據庫之中,不過盡管可以配置多個環境,但每個 SqlSessionFactory 實例只能選擇一種環境。

<environments default="development">
    
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${rul}"/>
                <property name="username" value="${password}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        
        <environment id="test">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
            
        </environment>
    </environments>

environments的default屬性指定了默認的配鏡環境。同時也可以在創建SqlSessionFactory時指定使用哪一套

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);

如果不聲明,則使用的為默認default的環境配置

事務管理器(transactionManager)

在 MyBatis 中有兩種類型的事務管理器(也就是 type="[JDBC|MANAGED]")

  • JDBC:配置直接使用了 JDBC 的提交和回滾設施

  • MANAGED:這個配置幾乎沒做什么,而是讓容器來管理事務的整個生命周期

且在以后的Spring+mybatis中Spring模塊會使用自帶的管理器來覆蓋前面的配置。所以二者了解即可

數據源(dataSource)

有三種內建的數據源類型(也就是 type="[UNPOOLED|POOLED|JNDI]")

  • UNPOOLED 無池
  • POOLED 有池
  • JNDI EJB服務器使用,了解即可

3、映射器(mappers)

mapper映射器的作用是告訴MyBatis到哪里去找到這些語句

有四種方法:

  • 使用相對於類路徑的資源引用
<mappers>
        <mapper resource="dao/UserMapper.xml"/>
</mappers>
  • 使用完全限定資源定位符(URL) 不推薦使用!
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
  • 使用映射器接口實現類的完全限定類名
<mappers>
    <mapper class="dao.UserMapper"/>
</mappers>
  • 將包內的映射器接口實現全部注冊為映射器
<mappers>
  <package name="dao"/>
</mappers>

如果使用package或者class兩種,需要接口與對應的xml文件同名同包。否則mybatis找不到對應關系

4、類型別名(typeAliases)

類型別名可為 Java 類型設置一個縮寫名字。 它僅用於 XML 配置,意在降低冗余的全限定類名書寫。
有兩種方式:

  • 自定義 typeAlias
<typeAliases>
        <typeAlias type="entity.User" alias="user"/>
</typeAliases>

這樣在所有xml中如果有要使用全限定名(entity.User)的地方都可以替換為別名(user)

  • 包掃描 package
<typeAliases>
        <package name="entity"/>
</typeAliases>

使用package時,mybatis會掃描聲明的包下所有類,並設置類的首字母小寫為默認別名

如果想要更改默認的別名,需要在實體類加注解

@Alias("u")
public class User {
    private int id;
    private String name;
    private String pwd;
}

這樣就可以覆蓋調默認被設置為user的別名為u

好了,現在我們再也不用寫很長的實體類全限定名了,可以用已經配置好的alias代替,這在實體類很多的項目中時十分有用的

mybatis也為我們提供了許多默認的別名

總的來說:

  • 基本數據類型別名為前面加下划線"_" 例如: int         _int

  • 基本類型包裝類為原數據類型首字母小寫 例如: Double       double

  • 其他JDK自帶的工具類等同為首字母小寫 例如:Map       map

5、設置Setting

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

  • cacheEnabled 是否開啟緩存,以后會提到。
  • lazyLoadingEnabled 是否開啟懶加載
  • logImpl 日志的具體實現
  • mapUnderscoreToCamelCase 是否開啟駝峰命名自動映射,即從經典數據庫列名 user_name 映射到經典 Java 屬性名 userName。
    其余暫時不作為了解的內容

6、其他配置

類型處理器(typeHandlers)

類型處理器是用來平衡java中和mysql中數據類型不統一的問題的,暫不作為重點了解即可。

objectFactory(對象工廠)和plugins(插件)

暫時不需要作為了解的內容,本文略

7、總結

mybatis-config.xml文件作為mybatis的核心配置,要掌握的大概就這么多,其余一些緩存、日志相關會在以后的進度中相繼添加。目前要掌握的不是特別多。實踐最重要!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM