文章目录
- MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
- 在配置文件中, 必定要保证配置信息的顺序, 否则就会报错, 以下图
属性(properties)
- 在MyBatis配置文件中,你可使用properties标签在外部引入配置信息, 也能够在标签内经过property标签设置配置信息
- 新建config.properties文件写入配置信息, 而后使用properties标签获取配置信息
- 使用propetry标签设置配置信息
<properties > <property name="username" value="root"/> </properties>
- 设置好的属性能够在整个配置文件中用来替换须要动态配置的属性值。
<environment id="development3"> <transactionManager type="JDBC"/> <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>
- 注意, 对应的名称必定要相同, 好比username就要对应username, 并且若是同时使用外部配置文件和property, 优先级是外部配置文件优先级更高
设置(settings)
- 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。
<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>
类型别名(typeAliases)
- 设置短的名字, 意义在于减小彻底限定名, 代码更加整洁, 若是咱们不设置别名, 那么咱们在映射器文件中就必须使用全限定名, 若是咱们设置了别名就可使用咱们的别名代替全限定名
- 设置方式
- 在配置文件中DIY设置
<typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> <typeAlias alias="Blog" type="domain.blog.Blog"/> <typeAlias alias="Comment" type="domain.blog.Comment"/> <typeAlias alias="Post" type="domain.blog.Post"/> <typeAlias alias="Section" type="domain.blog.Section"/> <typeAlias alias="Tag" type="domain.blog.Tag"/> </typeAliases>
- 给定包自动扫描设置, 这种默认生成的别名是首字母小写的全名称好比domain.blog.Author生成的就是author
<typeAliases> <package name="domain.blog"/> </typeAliases>
- 经过注解DIY别名
@Alias("author") public class Author { ... }
环境配置(environments)
- MyBatis 能够配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中
- 不过要记住:尽管能够配置多个环境,但每一个 SqlSessionFactory 实例只能选择一种环境。
- 若是你想链接两个数据库,就须要建立两个 SqlSessionFactory 实例,每一个数据库对应一个。而若是是三个数据库,就须要三个实例
- environments 使用default绑定哪一个id就是时间哪一个环境
<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>
注意一些关键点
默认使用的环境 ID(好比:default=“development”)。
每一个 environment 元素定义的环境 ID(好比:id=“development”)。
事务管理器的配置(好比:type=“JDBC”)。
数据源的配置(好比:type=“POOLED”)。
java
事务管理器(transactionManager)
- 事务管理器有俩种
- JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源得到的链接来管理事务做用域。
- MANAGED – 这个配置几乎没作什么。它从不提交或回滚一个链接,而是让容器来管理事务的整个生命周期(好比 JEE 应用服务器的上下文)。 默认状况下它会关闭链接。因此不多用它
- 咱们常常默认使用的就是JDBC
数据源(dataSource)
- dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 链接对象的资源。
- 有三种内建的数据源类型
- UNPOOLED– 这个数据源的实现会每次请求时打开和关闭链接。虽然有点慢,但对那些数据库链接可用性要求不高的简单应用程序来讲,是一个很好的选择。
- POOLED– 这种数据源的实现利用“池”的概念将 JDBC 链接对象组织起来,避免了建立新的链接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
- JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器能够集中或在外部配置数据源,而后放置一个 JNDI 上下文的数据源引用。
- 咱们常常默认使用的就是POOLED
映射器说明(mappers)
- 使用mappers元素要绑定咱们的映射器文件
- 最经常使用的就是使用相对于类路径的资源引用, 使用这个很自由, 直接绑定映射器
<mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>
- 使用映射器接口实现类的彻底限定类名, 使用这个必须保映射器.xml文件和接口实体类在同一个目录下并且必须是同名的
<mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/> <mapper class="org.mybatis.builder.PostMapper"/> </mappers>
- 将包内的映射器文件实现所有注册进来成为映射器, 使用这个要求和上述同样必须保映射器.xml文件和接口实体类在同一个目录下并且必须是同名的
<mappers> <package name="org.mybatis.builder"/> </mappers>