MyBatis 的 XML配置文件包含了影响 MyBatis行为的主要设置和属性信息。
备注:顶层的配置项没有要求所有项都配置,必须按其顺序进行配置
这些是外部化的,可替代的属性, 这些属性也可以配置在典型的 Java属性配置文件中, 或者通过 properties 元素的子元素来传递。例如:
<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </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>
这个例子中的 username 和 password 将会由 properties 元素中设置的值来替换。 driver 和 url 属性将会从包含进来的 config.properties 文件中的值来替换。这里提供很多配置的选项。
属性也可以被传递到SqlSessionBuilder.build()方法中。例如:
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props); // ... or ... SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment, props);
如果在多个地方配置了属性,MyBatis 按照如下的顺序加载它们:
?在 properties 元素体内指定的属性首先被读取。因此, 最高优先级的属性是那些作为方法参数的, 然后是资源/url 属性, 最后是 properties 元素中指定的属性。
这些是极其重要的调整,它们会修改 MyBatis在运行时的行为方式。下面这个表格描述了设置信息,它们的含义和默认值。
一个设置信息元素的示例,完全的配置如下所示:
<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="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <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>
类型别名是为 Java类型命名一个短的名字。它只和 XML配置有关, 只用来减少类完全限定名的多余部分。例如:
<typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> </typeAliases>
Mybatis 内建的类型别名列表:
类型处理器,类型处理器被用来将获取的值以合适的方式转换成 Java类型。下面这个表格描述了默认的类型处理器。
当然你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。MyBatis 允许你在某一点拦截已映射语句执行的调用。默认情况下,MyBatis 允许使用插件来拦截方法调用:
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment); SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment,properties);
环境元素定义了如何配置环境。
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"> <property name="..." value="..."/> </transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments>
MyBatis能够根据你的数据库供应商执行不同的语句。多种不同的供应商支持基于映射语句databaseId属性。没有databaseId属性或与databaseId相匹配的时,MyBatis将加载所有语句。如果情况相同databaseId的声明,将会加载第一个,后者会被丢弃。添加数据库支持可以在配置文件中添加如下属性:
<databaseIdProvider type="DB_VENDOR" /> <property name="SQL Server" value="sqlserver"/> <property name="DB2" value="db2"/> <property name="Oracle" value="oracle" /> </databaseIdProvider>
<!-- Using classpath relative resources --> <mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>
下一篇笔者将分析Mybatis中的SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession等几个重要对象,及其生命周期等!
欢迎大家一起讨论学习!
有用的自己收!
记录与分享,让你我共成长!欢迎查看我的其他博客;我的博客地址:http://blog.csdn.net/caicongyang
Mybatis实战(二)配置文件详解,布布扣,bubuko.com
原文:http://blog.csdn.net/caicongyang/article/details/22148857