如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载
在mybatis-config.xml映射文件中,所有标签都有顺序
查看标签顺序
1.1:properties 属性 引入外部配置文件
<property name="username" value="${username:ut_user}"/> <!-- 如果属性 'username' 没有被配置,'username' 属性的值将为 'ut_user' -->
1.2:settings 属性 全局配置(mybatis-config.xml)
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/><!--开启命名下划线自动转驼峰!是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。-->
</settings>
配置参数
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
1.3:typeAliases属性 为java类取别名(不区分大小写)
三种方式取别名
a.<typeAlias type="entity.MyBatis" alias="tis"></typeAlias>为单个取别名
b.<package name="entity"></package>整个包 如:entity.MyBatis自动取别名为myBatis
c.@Alias("myBatis") 注解版
1.4:typeHandlers属性 类型处理器(mybatis 3.4以后的版本,类型处理器都自动适配)
处理java类型与数据库类型的适配
1.5:处理枚举类型
1.6:对象工厂(objectFactory)
1.7:插件(plugins)拦截的方法调用,类似spring中的九大作用域
- Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
- ParameterHandler (getParameterObject, setParameters)
- ResultSetHandler (handleResultSets, handleOutputParameters)
- StatementHandler (prepare, parameterize, batch, update, query)
1.8:环境配置(environments)快速切换环境配置(如测试环境和开发环境的切换)
<environments default="test"><!-- default指定使用某个环境 -->
<environment id="development"><!-- 开发环境 -->
<environment id="test"><!-- 测试环境 -->
<!-- ↓↓↓↓↓↓↓↓↓↓ 不懂看下面 ↓↓↓↓↓↓↓↓↓↓ -->
1.9:数据库厂商标识(databaseIdProvider) 移植性-支持多数据库
a、配置数据源
<environments default="test"><!-- default指定使用某个环境 -->
<environment id="development"><!-- 开发环境 -->
<transactionManager type="dev_mysql"/>
<dataSource type="POOLED">
<property name="driver" value="${mys.driver}"/>
<property name="url" value="${mys.url}"/>
<property name="username" value="${mys.username}"/>
<property name="password" value="${mys.password}"/>
</dataSource>
</environment>
<environment id="test"><!-- 测试环境 -->
<transactionManager type="dev_oracle"/>
<dataSource type="POOLED">
<property name="driver" value="${ora.driver}"/>
<property name="url" value="${ora.url}"/>
<property name="username" value="${ora.username}"/>
<property name="password" value="$ora.{password}"/>
</dataSource>
</environment>
</environments>
b、配置产商标识(作用于c,在mapper文件中调用,体现)
<databaseIdProvider type="DB_VENDOR">
<property name="SQL Server" value="sqlserver"/>
<property name="MySql" value="mysql"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
c、mapper.xml文件的SQL语句编写(xml配置文件中配置好别名后,在mybatis映射文件的方法里添加databaseid标签中添加别名)
<insert id="testAdd" databaseId="oracle" parameterType="entity.User"> <!-- databaseId配置使用什么数据库 -->
2.0:映射器(mappers)告诉 MyBatis 到哪里去找映射文件
<mappers>
a、xml映射文件 c、注解版
<mapper resource="mybatis/MyBatisMapping.xml"/><!--映射文件-->
b、接口
<mapper class="dao.MyBatisMapping"></mapper><!--接口 映射文件必须和接口同名,并且和接口在同一目录下-->
d、批量注册(一般使用这种)
<package name="dao"></package>
</mappers>