MyBatis配置文件解析
MyBatis配置文件解析(概要)
1.configuration:根元素
1.1 properties:定义配置外在化
1.2 settings:一些全局性的配置
1.3 typeAliases:为一些类定义别名
1.4 typeHandlers:定义类型处理,也就是定义JAVA类型与数据库中的数据类型之间的转换关系
1.5 objectFactory
1.6 plugins:mybatis插件,插件可以修改MyBatis内部运行规则
1.7 environments:配置Mybatis的环境
1.7.1 enveronment
1.7.1.1 transactionManager:事务管理器
1.7.1.2 datasource:数据源
1.8 databaseIdProvider
1.9 mappers:指定映射文件或映射类
这里我们重要介绍transactionManager和datasoruce的type取值
transactionManager:
type取值范围:
JDBC:简单的使用JDBC的提交和回滚设置,一览与从数据员得到的链接来管理事务范围
MANAGED:这个配置几乎什么都没做,它从来不提交或回滚一个链接,而它让容器来管理事务的整个生命周期(比如spring、jee应用服务器的上下文)
在默认情况下,MANAGED会关闭连接,如果有时候不希望这样时,可以从连接中停止它,将claseConnection属性设置为false:
<transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager>
dataSource:
type取值范围:
UNPOOLED:这个数据源的实现是每次被请求时打开和关闭连接。速度会有一些慢,适用于简单的应用程序。
这种类型的数据源只需要配置下面的6种属性(最后一项为可选):
| driver | JDBC驱动名 |
| url | JDBC URL地址 |
| username | 数据库用户名 |
| password | 数据库密码 |
| defaultTransactionIsolationLevel | 默认的链接事务隔离级别 |
| driver.encoding | utf-8(可选项) |
POOLED:这是JDBC链接对象的数据源连接池的实现,用来避免创建新的链接实例时必要的连接和认证时间。适用于当前Web应用程序用来快速响应请求
这种类型的数据源除了需要配置UNPOOLED中的基础配置外,还可以配置下面的内容:
| poolMaximumActiveConnections | 在任意时间正在使用链接的数量 |
| poolMaximumIdleConnections | 任意时间存在的空闲连接数 |
| poolMaximumCheckoutTime | 在被强制返回之前,连接池中被检查的时间,默认值为20000毫秒 |
| poolTimeToWait | 给连接池一个打印日志状态机会的低层次设置,还有重新尝试获取连接,这些情况往往会需要很长时间。为了避免连接池没有配置时静默失败。默认值20000毫秒 |
| 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
MyBatis配置文件解析的更多相关文章
- MyBatis 源码分析 - 配置文件解析过程
* 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...
- MyBatis配置解析
MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...
- mybatis源码分析之02配置文件解析
该篇正式开始学习mybatis的源码,本篇主要学习mybatis是如何加载配置文件mybatis-config.xml的, 先从测试代码入手. public class V1Test { public ...
- mybatis源码配置文件解析之二:解析settings标签
在前边的博客中分析了mybatis解析properties标签,<mybatis源码配置文件解析之一:解析properties标签>.下面来看解析settings标签的过程. 一.概述 在 ...
- mybatis源码配置文件解析之三:解析typeAliases标签
在前边的博客在分析了mybatis解析settings标签,<mybatis源码配置文件解析之二:解析settings标签>.下面来看解析typeAliases标签的过程. 一.概述 在m ...
- mybatis源码配置文件解析之五:解析mappers标签(解析XML映射文件)
在上篇文章中分析了mybatis解析<mappers>标签,<mybatis源码配置文件解析之五:解析mappers标签>重点分析了如何解析<mappers>标签中 ...
- mybatis源码配置文件解析之五:解析mappers标签
在上篇博客中分析了plugins标签,<mybatis源码配置文件解析之四:解析plugins标签>,了解了其使用方式及背后的原理.现在来分析<mappers>标签. 一.概述 ...
- mybatis源码配置文件解析之四:解析plugins标签
在前边的博客在分析了mybatis解析typeAliases标签,<mybatis源码配置文件解析之三:解析typeAliases标签>.下面来看解析plugins标签的过程. 一.概述 ...
- myBatis源码解析-配置文件解析(6)
前言 本来打算此次写一篇关于SqlSession的解析,但发现SqlSession涉及的知识太多.所以先结合mybatis配置文件(我们项目中常写的如mybatisConfig.xml),来分析下my ...
随机推荐
- HTML <hr /> 标签 在页面中创建一条水平线
一,定义和用法 <hr /> 标签在 HTML 页面中创建一条水平线. 水平分隔线(horizontal rule)可以在视觉上将文档分隔成各个部分. 二,HTML 与 XHTML 之间的 ...
- github-ssh
# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: ...
- SharePoint 2013 WebPart 管理工具分享[开源]
前言 之前做门户的时候,经常要导入导出WebPart,非常的频繁,然后就需要一个个导出,然后一个个导入,非常繁琐:闲暇之际,就考虑能不能自动化一下,把这个功能写成一个工具,可以方便的管理WebPart ...
- 如何更好的通过Inflate layout的方式来实现自定义view
本篇文章讲的是如何用现有控件产生一个组合控件的方法,十分简单实用.现在开始! 一.需求 我们要实现一个有红点和文字的按钮控件,就像下面这样: 二.实现 我的思路是让一个button和一个textvie ...
- 【网络编程】Socket概念及简单聊天…
Socket(套接字) * Socket就是为网络服务提供的一种机制 * 通信的两端都是Socket * 网络通信其实就是Socket间的通信 * 数据在两个Socket间通过IO传输 我们来看看下面 ...
- Android Studio 打包签名发布New Key Store
Key store path:存放路径 Key Alias:别名 Validity(years):有效期 Certificate:证书 First and Last Name: Organizatio ...
- 在Asp.net MVC使用jqGrid--代码少点再少点
本示例显示了如何动态生成前端jqGrid代码,一般情况仅一行代码: <%=Html.jqGrid<TestModel>(@"#jqT", "Test&q ...
- C#中的Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- java多线程与单例模式(Singleton)不得不说的故事
转发自:http://blog.csdn.net/ligang7560/article/details/50890282 单例模式的多种实现方式 我们都知道单例模式有几种常用的写法: - 饿汉模式 - ...
- 解决easy ui 1.4datebox控件不能清空的问题
用easy ui遇到这个问题,在网上找到了解决方案,不过是1.3.6版本的.现提供1.4版本的修改的具体位置和代码. 我们用的是这个 修改位置:12739行,添加代码: , { text: funct ...