设置

settings是MyBatis中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

  • Enabled - 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。默认为true
  • defaultStatementTimeout - 设置超时时间,它决定数据库驱动等待数据库响应的秒数。

settings配置

<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>
类型别名(typeAlises)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。type字段表示所选的类名,alias表示对该类起的别名。

<typeAlises>
  <typeAlias type="domain.blog.Author" alias="Author"/>
  <typeAlias type="domain.blog.Blog" alias="Blog"/>
  <typeAlias type="domain.blog.Comment" alias="Comment"/>
  <typeAlias type="domain.blog.Post" alias="Post"/>
  <typeAlias type="domain.blog.Section"alias="Section"/>
  <typeAlias alias="Tag" type="domain.blog.Tag" alias="Tag"/>
</typeAlises>

也可以直接指定一个包名,这样这个包内的所有类都会有一个别名。

<typeAliases>
  <package name="domain.blog"/>
</typeAliases>

默认会使用首字母小写的类全限定名来作为类的别名。也可以使用注解来指定别名。

@Alias("abcde")   // abcde为该类的别名
public class Student {
    private int sid;
    private String name;
    private String sex;
}
环境配置(environments)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/study"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

在配置文件中可以设定多个环境,每个SqlSessionFactory只能对应一个环境,可以在创建时指定使用哪个环境。

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);

当没有指定所使用的环境时,会使用默认环境。

配置环境的一些内容:

  • id - 表示该环境的名称。
  • transactionManager - 事务管理器的配置
  • dataSource - 数据源的配置

事务管理器在MyBatis中有两种事务管理器。

<transactionManager type="[JDBC|MANAGED]">
      <property name="..." value="..."/>
    </transactionManager>
  • JDBC - 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED - 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。

数据源(dataSource)dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")

  • POOLED - 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
  • UNPOOLED – 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。
  • JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。

常用的属性有以下几种:

  • driver – 这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
  • url – 这是数据库的 JDBC URL 地址。
  • username – 登录数据库的用户名。
  • password – 登录数据库的密码。
  • defaultTransactionIsolationLevel – 默认的连接事务隔离级别。
  • defaultNetworkTimeout – 等待数据库操作完成的默认网络超时时间(单位:毫秒)。
分类: Mybatis

0 条评论

发表评论

邮箱地址不会被公开。