前言
该篇文章为mybatis-config.xml的笔记,主要记录 xml 配置文件中比较主要的配置(不是所有的配置)。也就是xml中的各种标签。参考自官方文档。
一、settings(设置)
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表 描述了设置中各项设置的含义、默认值等。
比如:logImpl属性,用于指定 MyBatis 所用日志的具体实现,未指定时将自动查找。
其他属性在 官网的表格 中已经详细描述了各个设置。
二、typeAliases(类型别名)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
可以在xml配置文件中设置别名,这样就不需要在xml映射文件中写全限定路径了(全限定路径:包名+类名)。
三、environments(环境配置)
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
environments 标签下只有一个标签元素,即environment:用于配置多种环境。environments 标签中的"default"属性表示默认使用的环境,default属性值为environment标签中的id值。
1.environment
environment 标签下有两个子标签,分别是transactionManager(事务管理器)和 dataSource(数据源)。
1.1 transactionManager(事务管理器)
在 MyBatis 中有两种类型的事务管理器(也就是 type=“[JDBC|MANAGED]”):
- JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
- MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。
注意:如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。
备注:上面也就是说,如果使用了Spring(声明式事务),此时应该设置为MANAGED,即把事务转交给其他容器,相当于原生的JDBC事务setAutoCommit(false),自动提交设置成了false。此时其他容器(Spring)帮你提交,那么就是其他容器帮你回滚。
1.2 dataSource(数据源)
dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
有三种内建的数据源类型(也就是 type=“[UNPOOLED|POOLED|JNDI]”):
- UNPOOLED:这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。
- POOLED:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。POOLED:
- JNDI:这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。
三种数据源类型的属性详情请查看: 数据源(dataSource)
四、mappers(映射器)
我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。
一共有四种方式:
- 使用相对于类路径的资源引用
- 使用完全限定资源定位符(URL)
- 使用映射器接口实现类的完全限定类名
- 将包内的映射器接口实现全部注册为映射器
代码如下:
<!-- 映射器 -->
<mappers>
<!--用相对于类路径的资源引用(加载映射文件)-->
<mapper resource="mapper/UserMapper.xml"></mapper>
<!--将包内的映射器接口实现全部注册为映射器(加载接口)-->
<!-- <mapper class="mapper.UserMapper"></mapper>-->
<!--使用完全限定资源定位符(URL)(加载地址)-->
<!--<mapper url="D://UserMapper.xml"></mapper>-->
<!--使用映射器接口实现类的完全限定类名(加载接口实现类)-->
<!--<package name="com.slensoft.mapper"></package>-->
</mappers>
相关
我的该分类的其他相关文章,请点击:【Spring + Spring MVC + MyBatis】文章目录