mybatis的configuration XML中的配置項

mybatis的配置文件裏的配置標籤

一、properties

二、settings

<settings>
    <!---mapUnderscoreToCamelCase:開啓駝峯命名法,即數據庫中的例字段可以按駝峯命名法對應javaBean裏的屬性->
    <setting  name="mapUnderscoreToCamelCase" value="true"/>
    <!--jdbcTypeForNull: null值在數據庫中對應什麼值,mybatis默認是other值,但是這個值有的數據庫是如果
                         識別的比如orcal-->
    <setting name="jdbcTypeForNull" value="NULL"/>
    <!--lazyLoadingEnabled:懶加載開啓,開啓之後關聯的值可以在使用的時候再進行加載 -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!-- aggressiveLazyLoading:開啓後會完全加載,如果false時會按需加載-->
    <setting name="aggressiveLazyLoading" value="false"/>
</settings>

三、typeAliases

別名處理器,見

別名處理器簡介

四、typeHandlers

處理java數據於數據庫數據類型的對應

<typeHandlers>

</typeHandlers>

五、plugins

插件可能攔截以下四大對象:

Executor:執行器
ParameterHandler:參數處理器
ResultSetHandler:結果集處理器
StatementHandler:sql語句的處理器

六、 environments 環境配置

mybatis可以配置多個環境,用default指定使用某個環境,進行環境的切換;
environment標籤裏必須有 transactionManager和dataSource子標籤,其id表示一個environment的標識
            transactionManager:事物管理器
                              type:事物管理器的類型,有JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)兩種形式
                              自定義事物管理器:實現TransactionFactory接口.type指定爲全類名
             dataSource:數據源
                         type:UNPOOLED|POOLED|JNDI
                         自定義:type類全名
<environments default="dev_mysql">
        <environment id="dev_mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>

        <environment id="dev_oracle">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${orcl.driver}" />
                <property name="url" value="${orcl.url}" />
                <property name="username" value="${orcl.username}" />
                <property name="password" value="${orcl.password}" />
            </dataSource>
        </environment>
    </environments>

事務控制,數據庫配置在結合spring後,基本都是由spring做控制管理的

七、databaseIdProvider

 支持多數據庫廠商,mybatist移值控制,比如在mysql和 oracle不現數據庫
   type="DB_VENDOR":VendorDatabaseIdProvider
            作用就是得到數據庫廠商的標識(驅動getDatabaseProductName()),mybatis就能根據數據庫廠商標識來執行不同的sql;
     <databaseIdProvider type="DB_VENDOR">
        <property name="MySql" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>

在mapper映射文件裏可以通過(databaseId)指定上面通過 databaseIdProvider定義的數據庫廠商的別名來確定現在鏈接的哪種數據庫,則執行相應數據庫對應的sql語句,eg:

 <select id="getEmpById" resultType="com.duanrong.mybatis.bean.Employee  databaseId = 'mysql'>
     select * from employee where id=#{id}
 </select>
 <select id="getEmpById" resultType="com.duanrong.mybatis.bean.Employee  databaseId = 'oracle'>
     select * from employee where id=#{id}
 </select>

如果當前鏈接的是mysql數據庫,則加載sql語句時加載不帶databaseId屬性的和帶databaseId=’mysql’屬性的語句

八、 mappers 將sql映射註冊到全局配置中

 <mappers>
        <!-- 
            mapper:註冊一個sql映射 
                註冊配置文件
                resource:引用類路徑下的sql映射文件
                    mybatis/mapper/EmployeeMapper.xml
                url:引用網路路徑或者磁盤路徑下的sql映射文件
                    file:///var/mappers/AuthorMapper.xml

                註冊接口
                class:引用(註冊)接口,
                    1、有sql映射文件,映射文件名必須和接口同名,並且放在與接口同一目錄下;
                    2、沒有sql映射文件,所有的sql都是利用註解寫在接口上;
                    public interface EmployeeMapperAnnotation {
                                        @Select("select * from tbl_employee where id=#{id}")
                                        public Employee getEmpById(Integer id);
                                          }
                                         @Test
                                    public void test02() throws IOException{
                         SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
                         SqlSession openSession = sqlSessionFactory.openSession();
                         try{
                           EmployeeMapperAnnotation mapper =                                                    openSession.getMapper(EmployeeMapperAnnotation.class);
                           Employee empById = mapper.getEmpById(1);
                           System.out.println(empById);
                         }finally{
                           openSession.close();
                         }
                           }
                    推薦:
                        比較重要的,複雜的Dao接口我們來寫sql映射文件
                        不重要,簡單的Dao接口爲了開發快速可以使用註解;
        -->
        <!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> -->
        <!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->

        <!-- 批量註冊: -->
        <package name="com.atguigu.mybatis.dao"/>
    </mappers>

九 注意在配置文件裏這些標籤在書寫的時候有先後順序,不然會報錯,順序如下

 Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, 

objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章