mybatis源码分析二

这次分析mybatis的xml文件

1.

<?xml version="1.0" encoding="UTF-8" ?>
<configuration xmlns="http://mybatis.org/schema/mybatis-config"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://mybatis.org/schema/mybatis-config http://mybatis.org/schema/mybatis-config.xsd">
xml编写...
</configuration>

  2.资源配置

 <!--方法一: 从外部指定properties配置文件, 除了使用resource属性指定外,还可通过url属性指定url-->
    <!--方法二. 直接用name,value设置 -->
    <properties resource="org/apache/ibatis/builder/jdbc.properties">
        <property name="prop1" value="aaaa"/>
        <property name="jdbcTypeForNull" value="NULL" />
    </properties>

3.setting 标签

代码:

 <settings>
    <setting name="autoMappingBehavior" value="NONE"/>
    <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
    <setting name="cacheEnabled" value="false"/>
    <setting name="proxyFactory" value="CGLIB"/>
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="aggressiveLazyLoading" value="true"/>
    <setting name="multipleResultSetsEnabled" value="false"/>
    <setting name="useColumnLabel" value="false"/>
    <setting name="useGeneratedKeys" value="true"/>
    <setting name="defaultExecutorType" value="BATCH"/>
    <setting name="defaultStatementTimeout" value="10"/>
    <setting name="defaultFetchSize" value="100"/>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    <setting name="safeRowBoundsEnabled" value="true"/>
    <setting name="localCacheScope" value="STATEMENT"/>
    <setting name="jdbcTypeForNull" value="${jdbcTypeForNull}"/>
    <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString,xxx"/>
    <setting name="safeResultHandlerEnabled" value="false"/>
    <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.defaults.RawLanguageDriver"/>
    <setting name="callSettersOnNulls" value="true"/>
    <setting name="logPrefix" value="mybatis_"/>
    <setting name="logImpl" value="SLF4J"/>
    <setting name="vfsImpl" value="org.apache.ibatis.io.JBoss6VFS"/>
    <setting name="configurationFactory" value="java.lang.String"/>
  </settings>

 4. typeAliases是用来设置类路径别名的

    <typeAliases>
        <typeAlias alias="User" type="com.majing.learning.mybatis.entity.User"/>
    </typeAliases>

 别名其他介绍:https://blog.csdn.net/luoposhushengyizhuce/article/details/80791797

5.mappers配置方式,一看就懂

<mappers>
    <mapper resource="org/apache/ibatis/builder/xsd/BlogMapper.xml"/>
    <mapper url="file:./src/test/java/org/apache/ibatis/builder/xsd/NestedBlogMapper.xml"/>
    <mapper class="org.apache.ibatis.builder.xsd.CachedAuthorMapper"/>
    <package name="org.apache.ibatis.builder.mapper"/>
  </mappers>

6.数据库标识:databaseIdProvider 

1⃣️databaseIdProvider的type属性是必须的,不配置时会报错。上面这个属性值使用的是VendorDatabaseIdProvider类的别名。

2⃣️property子元素是配置一个数据库,其中的name属性是数据库名称,value是我们自定义的别名,通过别名我们可以在SQL语句中标识适用于哪种数据库运行。

  <databaseIdProvider type="DB_VENDOR">
    <property name="Apache Derby" value="derby"/>
  </databaseIdProvider>

或者多个:
<!--数据库厂商标示 -->
     <databaseIdProvider type="DB_VENDOR">
         <property name="Oracle" value="oracle"/>
         <property name="MySQL" value="mysql"/>
         <property name="DB2" value="d2"/>
    </databaseIdProvider>

 7.environments 配置数据源:

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

详细说明:https://blog.csdn.net/majinggogogo/article/details/71616712

8.typeHandlers type类型注册

<typeHandlers>
    <typeHandler javaType="String" handler="org.apache.ibatis.builder.CustomStringTypeHandler"/>
    <typeHandler javaType="String" jdbcType="VARCHAR" handler="org.apache.ibatis.builder.CustomStringTypeHandler"/>
    <typeHandler handler="org.apache.ibatis.builder.CustomLongTypeHandler"/>
    <package name="org.apache.ibatis.builder.typehandler"/>
  </typeHandlers>

...

  <objectFactory type="org.apache.ibatis.builder.ExampleObjectFactory">
    <property name="objectFactoryProperty" value="100"/>
  </objectFactory>

  <objectWrapperFactory type="org.apache.ibatis.builder.CustomObjectWrapperFactory" />

  <reflectorFactory type="org.apache.ibatis.builder.CustomReflectorFactory"/>

  <plugins>
    <plugin interceptor="org.apache.ibatis.builder.ExamplePlugin">
      <property name="pluginProperty" value="100"/>
    </plugin>
  </plugins>
原文地址:https://www.cnblogs.com/q1359720840/p/10583696.html