zoukankan      html  css  js  c++  java
  • mybatis.xml配置文件详解

    MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:

    • configuration(配置)

      • properties(属性)

      • settings(设置)

      • typeAliases(类型别名)

      • objectFactory(对象工厂)

      • plugins(插件)

      • environments(环境配置)

        • environment(环境变量)

          • transactionManager(事务管理器)

          • dataSource(数据源)

      • databaseIdProvider(数据库厂商标识)

      • mappers(映射器)

    properties(属性)

    加载数据库属性文件

    settings(设置)

    会改变 MyBatis 的运行时行为,具体详细属性见 https://mybatis.org/mybatis-3/zh/configuration.html#settings

    设置名描述有效值默认值
    cacheEnabled 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 true | false true
    lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。 true | false false
    aggressiveLazyLoading 开启时,任一方法的调用都会加载该对象的所有延迟加载属性。 否则,每个延迟加载属性会按需加载(参考 lazyLoadTriggerMethods)。 true | false false (在 3.4.1 及之前的版本中默认为 true)
    multipleResultSetsEnabled 是否允许单个语句返回多结果集(需要数据库驱动支持)。 true | false true
    useColumnLabel 使用列标签代替列名。实际表现依赖于数据库驱动,具体可参考数据库驱动的相关文档,或通过对比测试来观察。 true | false true
    useGeneratedKeys 允许 JDBC 支持自动生成主键,需要数据库驱动支持。如果设置为 true,将强制使用自动生成主键。尽管一些数据库驱动不支持此特性,但仍可正常工作(如 Derby)。 true | false False

    typeAliases(类型别名)

    类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如:

    • 指定类名

    <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>

    当这样配置时,Blog 可以用在任何使用 domain.blog.Blog 的地方。

    • 指定包名

    也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:

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

    每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值。见下面的例子:

    @Alias("author")
    public class Author {
        ...
    }

    环境配置(environments)

    MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中,例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

    不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

    所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推:

    • 每个数据库对应一个 SqlSessionFactory 实例

    为了指定创建哪种环境,只要将它作为可选的参数传递给 SqlSessionFactoryBuilder 即可。可以接受环境配置的两个方法是:

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

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

    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, properties);
    <environments default="development">
      <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
          <property city="driver" value="${driver}"/>
          <property city="url" value="${url}"/>
          <property city="usercity" value="${usercity}"/>
          <property city="password" value="${password}"/>
        </dataSource>
      </environment>
    </environments>

    映射器(mappers)

    定义 SQL 映射语句。 告诉 MyBatis 到哪里去找映射文件。 可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。例如:

    <!-- 通过resource引用mapper的映射文件  -->
    <mappers>
      <mapper resource="mapper/UserMapper.xml"/>
    </mappers>

    <!-- 通过class引用mapper接口, class:配置mapper接口全限定名 --> <!-- 要求:需要mapper.xml和mapper.java同名并且在一个目录 中 --> <mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> </mappers>

    <!-- 批量mapper配置,通过package进行自动扫描包下边的mapper接口 --> <!-- 要求:需要mapper.xml和mapper.java同名并且在一个目录 中 --> <mappers> <package city="org.mybatis.builder"/> </mappers>

     

  • 相关阅读:
    每天一点点之css
    【Vue中的坑】Vue中的修改变量没有效果?
    每天一点点之vue框架开发
    每天一点点之laravel框架开发
    每天一点点之vue框架开发
    推荐几款好用的办公软件
    每天一点点之vue框架开发
    Unity3D调用摄像头,画面为翻转的问题
    正确显示竖屏预览和拍照的照片
    卡尔曼滤波简介+ 算法实现代码
  • 原文地址:https://www.cnblogs.com/yjh1995/p/13893679.html
Copyright © 2011-2022 走看看