Mybatis 的配置详解
1.核心配置文件
1.1 properties 属性
<!-- 配置属性
1.用于外部配置实现动态替换。
2.可以使用property属性来配置;也可以引用外部的properties文件,默认读取classpath下的文件。
使用${name}来获取value值
3.配置冲突时,先读取property标签数据;然后读取配置文件数据;最后读取方法参数传递的属性值,重名时会覆盖。
-->
<properties resource="db.properties">
<property name="username" value="root"/>
</properties>
1.2 settings 设置
<!-- settings
调整设置,可改变运行时行为
-->
<settings>
<!-- 缓存的全局开关,默认是true -->
<setting name="cacheEnabled" value="true"/>
<!-- 延迟加载全局开关,默认是false -->
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
1.3 typeAliases 类型命名
<!-- 类型别名设置:
类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。
-->
<typeAliases>
<!-- 单个类指定别名 -->
<!-- <typeAlias type="po.User" alias="user"/> -->
<!-- 为指定的包下所有类指定别名,默认为类名,首字母大小写均可 -->
<package name="pojo"/>
</typeAliases>
d) typeHandlers 类型处理器
将获取的值以合适的方式转换成 Java 类型。
默认即可,也可自定义。
e) objectFactory 对象工厂
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化
f) plugins 插件
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。
1.4 environments 环境
- environment 环境变量
- transactionManager 事务管理器
- dataSource 数据源
<!-- 配置环境:
1.可以配置成适应多种环境,将sql映射到多种数据库中
2.尽管可以配置多个环境,每个 SqlSessionFactory实例只能选择其一
3.default指默认使用环境的id
-->
<environments default="development">
<!-- 单个环境配置:必须指定id -->
<environment id="development">
<!--事务管理器:
type:
1.JDBC:这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
需要手动控制,除非指定自动提交事务
2.MANAGED:从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期
-->
<transactionManager type="JDBC"/>
<!--数据源的配置:
type:
1.UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。虽然一点慢,它对在及时可用连接方面没有性能要求的简单应用程序是一个很好的选择。
2.POOLED:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。
3.JNDI:这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}