zoukankan      html  css  js  c++  java
  • Mybatis配置文件属性讲解

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

    • configuration 配置 
      • properties 属性
      • settings 设置
      • typeAliases 类型命名
      • typeHandlers 类型处理器
      • objectFactory 对象工厂
      • plugins 插件
      • environments 环境 
        environment 环境变量 
        ■ transactionManager 事务管理器 
        ■dataSource 数据源
      • databaseIdProvider chinese?
      • mappers 映射器

    properties

    这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的 Java 属性配置文件中, 或者通过 properties 元素的子元素来传递。例如:

    <properties resource="org/mybatis/example/config.properties">
      <property name="username" value="dev_user"/>
      <property name="password" value="F2Fa3!33TYyg"/>
    </properties>

    其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。比如:

    <dataSource type="POOLED">
      <property name="driver" value="${driver}"/>
      <property name="url" value="${url}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
    </dataSource>

    如果在这些地方,属性多于一个的话,MyBatis 按照如下的顺序加载它们:

    •在 properties 元素体内指定的属性首先被读取。 
    •从类路径下资源或 properties 元素的 属性中加载的属性第二被读取,它会 覆盖已经存在的完全一样的属性。 
    •作为方法参数传递的属性最后被读取, 它也会覆盖任一已经存在的完全一样的 属性

    settings

    这些是极其重要的调整, 它们会修改 MyBatis 在运行时的行为方式。 下面这个表格描述 了设置信息,它们的含义和默认值。

    1. cacheEnabled 
      这个配置使全局的映射器启用或禁用 缓存,默认true 。
    2. lazyLoadingEnabled 
      全局启用或禁用延迟加载。当禁用时, 所有关联对象都会即时加载,默认true 。
    3. defaultStatementTimeout 
      设置超时时间, 它决定驱动等待一个数 据库响应的时间,默认没有设置。

    还有就不一一列举了

    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”所使用的地方。

    typeHandlers

    无论是 MyBatis 在预处理语句中设置一个参数, 还是从结果集中取出一个值时, 类型处 理器被用来将获取的值以合适的方式转换成 Java 类型。下面这个表格描述了默认的类型处 理器。

    这里写图片描述

    environments

    MyBatis 可以配置多种环境。这会帮助你将 SQL 映射应用于多种数据库之中。例如, 你也许为开发要设置不同的配置, 测试和生产环境。 或者你可能有多种生产级数据库却共享 相同的模式,所以你会想对不同数据库使用相同的 SQL 映射。这种用例是很多的。

    你可以配置多种环境,但你只能为每个 SqlSessionFactory 实例选择一个,所以,如果你想连接两个数据库,你需要创建两个 SqlSessionFactory 实例,每个数据库 对应一个。而如果是三个数据库,你就需要三个实例,以此类推。记忆起来很简单: 
    为了明确创建哪种环境,你可以将它作为可选的参数传递给 SqlSessionFactoryBuilder。 可以接受环境配置的两个方法签名是:

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

    注意这里的键:

    •默认的环境 ID(比如:default=”development”)。 
    •每个 environment 元素定义的环境 ID(比如:id=”development”)。 
    •事务管理器的配置(比如:type=”JDBC”)。 
    •数据源的配置(比如:type=”POOLED”)。

    transactionManager

    在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”):

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

    <transactionManager type="MANAGED">
      <property name="closeConnection" value="false"/>
    </transactionManager>

    dataSource

    dataSource 元素使用基本的 JDBC 数据源接口来配置 JDBC 连接对象的资源。 
    有三种内建的数据源类型(也就是 type=”???”):

    • UNPOOLED – 这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢, 这是对简单应用程序的一个很好的选择, 因为它不需要及时的可用连接。 不同的数据库对这 个的表现也是不一样的, 所以对某些数据库来说配置数据源并不重要, 这个配置也是闲置的
    • POOLED – 这是 JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例 时必要的初始连接和认证时间。这是一种当前 Web 应用程序用来快速响应请求很流行的方 法。
    • JNDI – 这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器, 容器可以集 中或在外部配置数据源,然后放置一个 JNDI 上下文的引用

    mapper

    既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。 但是, 首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在这方面没有提供一个很好 的方法, 所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的 资源引用,或者字符表示,或 url 引用的完全限定名(包括 file:///URLs) 。例如:

    <!-- Using classpath relative resources -->
    <mappers>
      <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
      <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
      <mapper resource="org/mybatis/builder/PostMapper.xml"/>
    </mappers>
    <!-- Using url fully qualified paths -->
    <mappers>
      <mapper url="file:///var/mappers/AuthorMapper.xml"/>
      <mapper url="file:///var/mappers/BlogMapper.xml"/>
      <mapper url="file:///var/mappers/PostMapper.xml"/>
    </mappers>
  • 相关阅读:
    oracle乱码问题
    fopen 參数具体解释
    图像特征提取方法:Bag-of-words
    事务应用-运行多条SQL语句
    八大排序算法总结
    svn经常使用命令具体解释(非常全,非常有用)
    android layout属性介绍
    ubuntu/linux mint 创建proc文件的三种方法(四)
    在归档模式下删除非系统文件的恢复
    解决使用DevExpress开发错误:未将对象引用设置到对象的实例
  • 原文地址:https://www.cnblogs.com/nianqiao/p/7348944.html
Copyright © 2011-2022 走看看