可以从外部导入配置 例如数据源配置文件
<properties resource="mysql.properties">properties>
然后在
里面进行动态加载
<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>
也可以把属性作为参数进行传递.
SqlSessionFactory build(Reader reader)—最常用的方法,直接配置好,直接读入使用
Environment environment=new Environment(id, transactionFactory, dataSource);
SqlSessionFactory build(Reader reader, String environment)—-把Environment分出来
Environment决定加载哪种环境,包括数据源和事务管理器。例如
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
…
<dataSource type="POOLED">
…
environment>
---------------------------------------------
<environment id="pro">
<transactionManager type="EXTERNAL">
…
<dataSource type="JNDI">
…
environment>
environments>
当把environment当参数传入时,configuration会配置environment,如果没有这个参数,将会调用默认的environment.
<environments default="development">
<environment id="development"> `
SqlSessionFactory build(Reader reader, Properties properties)—
如果你调用了使用properties实例的方法,那么MyBatis就会加载那些properties(属性配置文件),并你在你配置中可使用它们。那些属性可以用${xxx}语法形式多次用在配置文件中。
通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。
在3.4.2版本后,可以为占位符 设置一个默认值,但是默认是关闭的.
--开启默认值--!>
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
"mysql.properties">
--使用 ":" 作为属性键 value="?:"--!>
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/>
"POOLED">
-- .... -->
<property name="username" value="${db:username?:ut_user}"/>
-- 也可以使用三目运算符--!>
<property name="username" value="${username!= null ? username: 'ut_user'}"/>
完整settings元素
--映射器缓存开关--!>
"cacheEnabled" value="true"/>
--设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能
"aggressiveLazyLoading" value="true"/>
--!>
-- 查询时,关闭关联对象即时加载以提高性能--!>
"lazyLoadingEnabled" value="true"/>
--是否允许单一语句返回多结果集(需要兼容驱动)。 默认true--!>
"multipleResultSetsEnabled" value="true"/>
-- 允许使用列标签代替列名 -->
"useColumnLabel" value="true"/>
--允许JDBC自动生成主键 开启强制生成主键--!>
"useGeneratedKeys" value="false"/>
--给予被嵌套的resultMap以字段-属性的映射支持--!>
"autoMappingBehavior" value="PARTIAL"/>
"autoMappingUnknownColumnBehavior" value="WARNING"/>
--置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。--!>
"defaultExecutorType" value="SIMPLE"/>
-- 数据库超过25秒仍未响应则超时 -->
"defaultStatementTimeout" value="25"/>
--为驱动的结果集获取数量(fetchSize)设置一个提示值--!>
"defaultFetchSize" value="100"/>
--允许在嵌套语句中使用分页--!>
"safeRowBoundsEnabled" value="false"/>
--是否开启自动驼峰命名规则(camel case)映射 数据库A_USER-->java aUser--!>
"mapUnderscoreToCamelCase" value="false"/>
--本地缓存机制--!>
"localCacheScope" value="SESSION"/>
--为空值指定 JDBC 类型--!>
"jdbcTypeForNull" value="OTHER"/>
--指定哪个对象的方法触发一次延迟加载。--!>
"lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余
<typeAliases>
<typeAlias alias="User" type="com.kx.domain.User"/>
"domain.blog"/>
typeAliases>
"UserMapper" type="User">
java类型转为 JDBC类型 例如 java.lang.Boolean, boolean —>数据库兼容的 BOOLEAN
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper class="org.mybatis.builder.AuthorMapper"/>