xml文件的层级结构

     configuration 配置

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

 
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>
 在 properties 元素体内指定的属性首先被读取。
 从类路径下资源或 properties 元素的 url 属性中加载的属性第二被读取,它会
覆盖已经存在的完全一样的属性。
 作为方法参数传递的属性最后被读取,它也会覆盖任一已经存在的完全一样的
属性,这些属性可能是从 properties 元素体内和资源/url 属性中加载的。
因此,最高优先级的属性是那些作为方法参数的,然后是资源/url 属性,最后是 properties
元素中指定的属性。
 Setting
<settings>
<!--这个配置使全局的映射器启用或禁用缓存-->
<setting name="cacheEnabled" value="true"/>
<!--全局启用或禁用延迟加载。 当禁用时,所有关联对象都即时加载。-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。-->
<setting name="aggressiveLazyLoding" value="true"/>//
<!--允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)。-->
<setting name="multipleResultSetsEnabled" value="true"/>//
<!--使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。-->
<setting name="useColumnLabel" value="true"/>
<!--允许 JDBC 支持生成的键。需要适合的驱动。如果设置为 true 则这个设置强制生成的键被使用,尽管一些驱 动拒绝兼容但仍然有效( \比如 Derby)。-->
<setting name="useGeneratedKeys" value="false"/>
<!--指定 MyBatis 如何自动映射列到字段/属性。 PARTIAL 只会自动映射简单,没有嵌套的结果。 FULL 会自动映射任意复杂的结果(嵌套的或其他情况)。-->
<setting name="enhancementEnabled" value="false"/>
<!--配置默认的执行器。 SIMPLE 执行器没有什么特别之处。 REUSE 执行器重用预处理语句。
BATCH 执行器重用语句和批量更新-->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!--设置超时时间,它决定驱动等待一个数据库响应的时间。任 何 正 整数Not Set(null-->
<setting name="defaultStatementTimeout" value="25000"/>
</settings>
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”所使用的地方。
对于普通的 Java 类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载
的名字,要注意原生类型的特殊处理。
别名 映射的类型

_byte byte _long long _short short _int int
_integer int _double double
_float float _boolean boolean string String byte Byte
long Long short Short int Integer integer Integer
double Double float Float boolean Boolean
date Date
decimal BigDecimal bigdecimal BigDecimal object Object
map Map hashmap HashMap list List
arraylist ArrayList collection Collection iterator Iterator 

typeHandlers

类型处理器被用来将获取的值以合适的方式转换成 Java 类型。
environments
>  >  要记得一个很重要的问题:你可以配置多种环境,但你只能为每个 SqlSessionFactory实例选择一个。
(所以,如果你想连接两个数据库,你需要创建两个 SqlSessionFactory 实例,每个数据库
对应一个。而如果是三个数据库,你就需要三个实例,)
》》  每个数据库对应一个 SqlSessionFactory
 
<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>
transactionManager
在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”):
 JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。它依赖于从数据源得
到的连接来管理事务范围。
 MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让
容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文)。默认
情况下它会关闭连接。然而一些容器并不希望这样,因此如果你需要从连接中停止
它,将 closeConnection 属性设置为 false。例如:

<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>
dataSsource
dataSource 元素使用基本的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
 许多 MyBatis 的应用程序将会按示例中的例子来配置数据源。然而它并不是必须的。
要知道为了方便使用延迟加载,数据源才是必须的。
有三种内建的数据源类型(也就是 type=”???”):
UNPOOLED – 这个数据源的实现是每次被请求时简单打开和关闭连接
POOLED      –  这是 JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。这是一种当前 
                          Web 应用程序用来快速响应请求很流行的方法。
除了上述( UNPOOLED)的属性之外,还有很多属性可以用来配置 POOLED 数据源:
 poolMaximumActiveConnections – 在任意时间存在的活动(也就是正在使用)连接的数量。默认值: 10
 poolMaximumIdleConnections – 任意时间存在的空闲连接数。
 poolMaximumCheckoutTime – 在被强制返回之前, 池中连接被检查的时间。默认值: 20000 毫秒(也就是 20 秒)
 poolTimeToWait – 这是给连接池一个打印日志状态机会的低层次设置,还有重新尝试获得连接,这些情况下往往需要很长时间(为了避免     连接池没有配置时静默失败)。默认值: 20000 毫秒(也就是 20 秒)
 poolPingQuery – 发送到数据的侦测查询,用来验证连接是否正常工作,并且准备接受请求。默认是“ NO PING QUERY SET”,这会引起    许多数据库驱动连接由一个错误信息而导致失败。
 poolPingEnabled – 这是开启或禁用侦测查询。如果开启,你必须用一个合法的
SQL 语句(最好是很快速的)设置 poolPingQuery 属性。默认值: false。
 poolPingConnectionsNotUsedFor – 这是用来配置 poolPingQuery 多次时间被用一次。这可以被设置匹配标准的数据库连接超时时间,来避免不必要的侦测。默认值:0(也就是所有连接每一时刻都被侦测-但仅仅当 poolPingEnabled 为 true 时适用)。
JNDI –          这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器,容器可以或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这个数据源配置只需要两个属性:
 initial_context – 这 个 属 性 用 来 从 初 始 上 下 文 中 寻 找 环 境 ( 也 就 是
initialContext.lookup( initial——context))。这是个可选属性,如果被忽略,那么
data_source 属性将会直接以 initialContext 为背景再次寻找。
 data_source – 这是引用数据源实例位置的上下文的路径。它会以由 initial_context
查询返回的环境为背景来查找,如果 initial_context 没有返回结果时,直接以初始
上下文为环境来查找。
和其他数据源配置相似,它也可以通过名为“ env.”的前缀直接向初始上下文发送属性。
比如:
 env.encoding=UTF8
在初始化之后, 这就会以值“ UTF8”向初始上下文的构造方法传递名为“ encoding”
的属性。
 
mappers
定义 SQL 映射语句了。
但是,首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在这方面没有提供一个很好
的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。你可以使用相对于类路径的
资源引用,或者字符表示,或 url 引用的完全限定名(包括 file:///URLs)。例如:
// 使用相对于类路径的资源
  

<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
// 使用完全限定路径
<mappers>
<mapper url="file:///var/sqlmaps/AuthorMapper.xml"/>
<mapper url="file:///var/sqlmaps/BlogMapper.xml"/>
<mapper url="file:///var/sqlmaps/PostMapper.xml"/>
</mappers>

xml配置文件的更多相关文章

  1. Mybatis 源码分析--Configuration.xml配置文件加载到内存

    (补充知识点: 1 byte(字节)=8 bit(位) 通常一个标准英文字母占一个字节位置,一个标准汉字占两个字节位置:字符的例子有:字母.数字系统或标点符号) 1.创建SqlSessionFacto ...

  2. 转-springAOP基于XML配置文件方式

    springAOP基于XML配置文件方式 时间 2014-03-28 20:11:12  CSDN博客 原文  http://blog.csdn.net/yantingmei/article/deta ...

  3. xml 配置文件规范 校验

    背景:做的数据同步框架,数据同步种类通过xml配置文件添加.为了系统的稳定性,我们只能认为将来写这个运行配置xml的人是一个傻瓜,那么对xml格式校验就很重要. 通过dom4j,是可以完成对xml格式 ...

  4. Spring中加载xml配置文件的六种方式

    Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog  因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...

  5. 史上最全web.xml配置文件元素详解

    一.web.xml配置文件常用元素及其意义预览 <web-app> <!--定义了WEB应用的名字--> <display-name></display-na ...

  6. Spring XML配置文件示例(二)——web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" ...

  7. hibernate.cfg.xml配置文件和hbm.xml配置文件

    http://blog.sina.com.cn/s/blog_a7b8ab2801014m0e.html hibernate.cfg.xml配置文件格式 <?xml version=" ...

  8. struts2中struts.xml配置文件详解【未整理】

    1.    深入Struts2的配置文件 本部分主要介绍struts.xml的常用配置. 1.1.    包配置: Struts2框架中核心组件就是Action.拦截器等,Struts2框架使用包来管 ...

  9. Spring 通过XML配置文件以及通过注解形式来AOP 来实现前置,环绕,异常通知,返回后通知,后通知

    本节主要内容: 一.Spring 通过XML配置文件形式来AOP 来实现前置,环绕,异常通知     1. Spring AOP  前置通知 XML配置使用案例     2. Spring AOP   ...

  10. 03SpringMvc_自定义的spring.xml配置文件和逻辑视图名

    这篇文章的目的是实现Struts2中一种形式(封装视图的逻辑名称),在Struts2中Action处理后会返回"SUCCESS"这样,然后根据"SUCCESS" ...

随机推荐

  1. 用js判断页面是否加载完毕

    用document.onreadystatechange的方法来监听状态改变, 然后用document.readyState == "complete"判断是否加载完成 docum ...

  2. Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法

    一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Orac ...

  3. [转载]Eclipse.ini的相关说明

    原文链接:http://www.cnblogs.com/yan5lang/archive/2011/05/24/2055867.html Eclipse的启动由$ECLIPSE_HOME/eclips ...

  4. 关于jquery自带动画效果的stop()问题

    首先先来看一下jquery中stop()的用法 stop()用于在动画执行前停止正在执行的动画 stop(stopAll,goToEnd)的两个参数为布尔值: stopAll:true/false:是 ...

  5. Hello 2016

    Hello 2016 I am really happy to work and study here. Nothing is better than be oneself ! It's import ...

  6. Codeforces Gym 100114 D. Selection

    Description 问选择一个序列上的所有数的最少操作次数,跟电脑上选择文件一样,输出操作方案. Sol 贪心. 用Shift一段文件只能使用一次,之后必须一直按Ctrl了. 然后就是看用Shif ...

  7. win7下配置Apache本地虚拟主机

    我们有时候从网上下载下来的php源码很多都是应用在网站根目录下的,而我们又想在本地先测试一遍确定没有问题了再上传空间,但一换到子目录下的时候因为路径问题,使得许多图片.内容都无法显示. 这个时候我们就 ...

  8. ulimit命令

    原文链接 linux下默认是不产生core文件的,要用ulimit -c unlimited放开 概述 系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件 ...

  9. Response.Redirect()、Server.Execute和Server.Transfer的区别

    1.Response.Redirect(): Response.Redirect方法导致浏览器链接到一个指定的URL. 当Response.Redirect()方法被调用时,它会创建一个应答,应答头中 ...

  10. Minimum Height Trees

    For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...