MyBatis核心配置文件概述

MyBatis核心配置文件概述

  • 配置文件的层级关系
  • 常用配置的解析
    • properties(属性)
    • settings(设置)
    • typeAliases(类型别名)
    • environments(环境配置)
    • mapper(映射器)

配置文件的层级关系

MyBatis的配置文件包括了会深深影响MyBatis行为的设置和属性信息。配置文档的层级结构如下:
MyBatis核心配置文件概述_第1张图片
注意:一定要按照层级关系来写标签,不然会报错(比如:将mapper(映射器)写在environments(环境配置前面),就会出错)

常用配置的解析

properties(属性)

实际开发中,习惯将数据源的配置文件信息单独抽取成一个properties文件,该标签可以加载额外配置的properties文件。

properties文件配置:
MyBatis核心配置文件概述_第2张图片
整个配置文件中用来替换需要动态配置的属性值:
MyBatis核心配置文件概述_第3张图片
在上面的例子中的driver和url属性将会由jdbc.properties文件中对应的值来替换,这样就为了配置提供了更多的灵活选择。
链接:https://mybatis.org/mybatis-3/zh/configuration.html#settings

一个配置完整的 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>

settings(设置)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。

typeAliases(类型别名)

这个标签可以为java类型设置一个缩写名字。他仅用于xml配置,主要为了降低冗余的权限类名。
MyBatis核心配置文件概述_第4张图片
我们可以使用配置typeAliases,定义别名:
MyBatis核心配置文件概述_第5张图片
这样我们就可以在resultType下使用我们定义好的别名,而不用使用权限类名的书写。

environments(环境配置)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
注意:尽管可以配置多个环境,但每个SqlSessionFactory实例只能选择一种环境
如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推。
每个数据库对应一个 SqlSessionFactory 实例
为了指定创建哪种环境,只要将它作为可选的参数传递给 SqlSessionFactoryBuilder 即可。可以接受环境配置的两个方法签名是:

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

如果忽略了环境参数,那么将会加载默认环境,如下所示:

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

environments元素定义了如何配置环境变量
MyBatis核心配置文件概述_第6张图片
其中,事务管理器(transactionManager)类型有两种:

  • JDBC:这个配置就是直接使用了JDBC的提交和回滚事物,他依赖于从数据源得到的连接来管理事物作用域。
  • MANAGED:这个配置几乎没做什么,他从来不提交或回滚一个连接,而是让容器来管理事物的整个生命周期(比如JEE应用服务器的上下文)。默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为。

其中,数据源(dataSource)类型有三种:

  • UNPOOIED:这个数据源的实现只是每次被请求时打开和关闭连接。
  • POOLED:这种数据源的实现利用 ”池“ 的概念将JDBC连接对象组织起来。
  • JNDI:这个数据源的实现是为了能在EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。

mapper(映射器)

既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。例如:
该标签的作用是加载映射的,加载方式有如一下几种:

使用相对于类路径的资源引用,例如:

<mapper resource="StuMapper.xml"></mapper>

使用完全限定资源定位符(URL),例如:

<mapper url="file:///var/mappers/..."></mapper>

使用映射器接口实现类的完全限定类名,例如:

<mapper class="org.mybatis.builder.AuthorMapper"></mapper>

将包内的映射器接口实现全部注册为映射器,例如:

<package name="org.mybatis.builder"/>

你可能感兴趣的:(SSM框架集,java,spring,java-ee,intellij,idea,mysql)