mybatis学习笔记(十二) 映射配置文件详解
2016-05-20 18:03
591 查看
使用mybatis开发项目,mapper配置文件是核心,里面一些配置项还是需要理解的。
mapper配置文件的层次结构如下:
configuration
- |--- properties
- |--- settings
- |--- typeAliases
- |--- typeHandlers
- |--- objectFactory
- |--- plugins
- |--- environments
- |--- - |--- environment
- |--- - |--- - |--- transactionManager
- |--- - |--- _ |__ dataSource
_ |__ mappers
使用这个配置, “Blog”就能在任何地方代替“domain.blog.Blog”被使用。
注意这些关键段:
◆ 设定一个默认环境 ID
◆ 这个环境 ID 对每个环境都起作用
◆ 配置事务管理器
◆ 配置数据源
默认的环境和环境 ID 是对自己起作用,你可以随意起你想叫的名字,只是他们是不重复的就可以了。
◆ JDBC - 这个类型直接全部使用 JDBC 的提交和回滚功能。它依靠使用连接的数据源来管理事务的
作用域。
◆ MANAGED - 这个类型什么不做,它从不提交、回滚和关闭连接。而是让窗口来管理事务的全部生
命周期。 (比如说 Spring 或者 JAVAEE 服务器)
它们俩都不需要任何的属性。然而,既然它们是类型别名,你就直接把你的类名称或者类型别名指向你
的 TransactionFactory 接口实现类就可以了。
要使用了懒加载,才必须使用数据源。数据源类型有三种:UNPOOLED,POOLED,JNDI。
UNPOOLED - 这个数据源实现只是在每次请求的时候简单的打开和关闭一个连接。虽然这有点慢,但
作为一些不需要性能和立即响应的简单应用来说,不失为一种好选择。不同的数据库在性能方面也有所
不同,所以相对于连接池来说倒是不重要,这个配置倒是蛮理想。UNPOOLED 数据源有几个属性:
◆driver - 指定 JDBC 驱动器的 JAVA 类,而不是数据类。
◆url - 连接数据库实例的 URL 路径
◆username- 登录数据库的用户名
◆password - 登录数据库的密码
◆defaultTransactionsolationLevel - 指定连接的默认事务隔离层
另外,你也可以为数据驱动器设置属性。只需要简单取‘driver.’开头就行了,比如说:
◆ driver.encoding=UTF8
这就会把属性为‘encoding’ ,值为‘UTF-8’ ,通过 DriverManager.getConnection(url, driverProperties) 方
法传递能数据库驱动器。
对于并发 WEB 应用,这种方式非常流行因为它有最快的响应时间。
在 UNPOOLED 的属于之上,POOLED 数据还有许多其它许多配置属性
� poolMaximumActiveConnections - 特定时间里可同时使用的连接数
� poolMaximumIdleConnections - 特定时间里闲置的连接数
� poolMaximumCheckoutTime - 在连接池强行返回前,一个连接可以进行‘检出’的总计时间
� poolTimeToWait - 这是一个底层的设置,给连接一个机会去打印 log 状态,并重新尝试重新连接,
免得长时间的等待。
� poolPingQuery - Ping Query 是发送给数据库的 Ping 信息,测试数据库连接是否良好和是否准备好了
接受请求。默认值是“NO PING QUERY SET” ,让大部分数据库都不使用 Ping,返回一个友好的错
误信息。
� poolPingEnabled - 设置 PingQuery 是否可用。如果可用,你可以使用一个最简单的 SQL 语句测试一
下。默认是:false
� poolPingConnectionsNotUsedFor - 配置 poolPingQuery 多长时间可以用。通常匹配数据库连接的超
时,避免无谓的 ping。默认:0,表示随时允许 ping,当然,必须在 poolPingEnabled 设为 true的前
提下。
I JNDI - 这个数据源实现是为了准备和 Spring 或应用服务一起使用,可以在外部也可以在内部配置这个
数据源,然后在 JNDI 上下文中引用它。这个数据源配置只需要两上属性:
� initial_context - 这 个 属 性 是 被 用 于 上 下 文 从 InitialContext 中 ( 比 如 :
initialContext.lookup(initial_context))查找。这个属性是可选的,如果被省略,InitialContext 将会直
接查找 data_source 属性。
� data_source- 这是数据源实例能搜索到的上下文路径。它会直接查找 initial_context 搜索返回的值 ,
如果 initial_context 没有值的庆,直接使用 InitialContext 查找。
MyBatis 3 用户指南中文版
曾令祝 18
像数据源其它配置一样,可以使用以‘env.’属性直接设给 InitialContext,例如:
� env.encoding=UTF8
这样就可以把值为‘UTF8’的属性直接代入 InitialContext 实例化的构造器。
mapper配置文件的层次结构如下:
configuration
- |--- properties
- |--- settings
- |--- typeAliases
- |--- typeHandlers
- |--- objectFactory
- |--- plugins
- |--- environments
- |--- - |--- environment
- |--- - |--- - |--- transactionManager
- |--- - |--- _ |__ dataSource
_ |__ mappers
一、properties
<properties resource="org/mybatis/example/config.properties"> <span style="white-space:pre"> </span><property name="username" value="leo"/> <span style="white-space:pre"> </span><property name="password" value="leo"/> </properties> 通过动态配置,这些属性都可以用替换整个文件的值。例如: <dataSource type="POOLED"> <span style="white-space:pre"> </span><property name="driver" value="${driver}"/> <span style="white-space:pre"> </span><property name="url" value="${url}"/> <span style="white-space:pre"> </span><property name="username" value="${username}"/> <span style="white-space:pre"> </span><property name="password" value="${password}"/> </dataSource>属性在配置文件中重复出现,可以使用这种方式,resource可以加载config.properties文件,属性driver将自动赋值。
二、setting
三、typeAliases(类型别名)
类型别名是 Java 类型的简称。它仅仅只是关联到 XML 配置,简写冗长的 JAVA 类名。例如:<typeAliases> <span style="white-space:pre"> </span><typeAlias alias="Author" type="domain.blog.Author"/> <span style="white-space:pre"> </span><typeAlias alias="Blog" type="domain.blog.Blog"/> <span style="white-space:pre"> </span><typeAlias alias="Comment" type="domain.blog.Comment"/> <span style="white-space:pre"> </span><typeAlias alias="Post" type="domain.blog.Post"/> <span style="white-space:pre"> </span><typeAlias alias="Section" type="domain.blog.Section"/> <span style="white-space:pre"> </span><typeAlias alias="Tag" type="domain.blog.Tag"/> </typeAliases>
使用这个配置, “Blog”就能在任何地方代替“domain.blog.Blog”被使用。
四、typeHandlers(类型句柄)
五、ObjectFactory(对象工厂)
六、plugins(插件)
七、environment(插件)
MyBatis 可以配置多个环境。这可以帮助你 SQL 映射对应多种数据库等。但是不同数据库有不同的SqlSessionFactory。<!-- 配置数据源信息 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"/> <property name="username" value="mysql"/> <property name="password" value="mysql"/> </dataSource> </environment> </environments>
注意这些关键段:
◆ 设定一个默认环境 ID
◆ 这个环境 ID 对每个环境都起作用
◆ 配置事务管理器
◆ 配置数据源
默认的环境和环境 ID 是对自己起作用,你可以随意起你想叫的名字,只是他们是不重复的就可以了。
事务管理器
MyBatis 有两个事情管理类型:◆ JDBC - 这个类型直接全部使用 JDBC 的提交和回滚功能。它依靠使用连接的数据源来管理事务的
作用域。
◆ MANAGED - 这个类型什么不做,它从不提交、回滚和关闭连接。而是让窗口来管理事务的全部生
命周期。 (比如说 Spring 或者 JAVAEE 服务器)
它们俩都不需要任何的属性。然而,既然它们是类型别名,你就直接把你的类名称或者类型别名指向你
的 TransactionFactory 接口实现类就可以了。
public interface TransactionFactory { void setProperties(Properties props); Transaction newTransaction(Connection conn,boolean autoCommit); }
数据源
数据源元素是用来配置使用 JDBC 数据源接口的 JDBC 连接对象的源。大部分的 MyBatis 应用像上面例子中那样配置数据源。但是,这并不是必须的。需要清楚的是:只要使用了懒加载,才必须使用数据源。数据源类型有三种:UNPOOLED,POOLED,JNDI。
UNPOOLED - 这个数据源实现只是在每次请求的时候简单的打开和关闭一个连接。虽然这有点慢,但
作为一些不需要性能和立即响应的简单应用来说,不失为一种好选择。不同的数据库在性能方面也有所
不同,所以相对于连接池来说倒是不重要,这个配置倒是蛮理想。UNPOOLED 数据源有几个属性:
◆driver - 指定 JDBC 驱动器的 JAVA 类,而不是数据类。
◆url - 连接数据库实例的 URL 路径
◆username- 登录数据库的用户名
◆password - 登录数据库的密码
◆defaultTransactionsolationLevel - 指定连接的默认事务隔离层
另外,你也可以为数据驱动器设置属性。只需要简单取‘driver.’开头就行了,比如说:
◆ driver.encoding=UTF8
这就会把属性为‘encoding’ ,值为‘UTF-8’ ,通过 DriverManager.getConnection(url, driverProperties) 方
法传递能数据库驱动器。
POOLED
- 这个数据源缓存 JDBC 连接对象用于避免每次都要连接和生成连接实例而需要的验证时间 。对于并发 WEB 应用,这种方式非常流行因为它有最快的响应时间。
在 UNPOOLED 的属于之上,POOLED 数据还有许多其它许多配置属性
� poolMaximumActiveConnections - 特定时间里可同时使用的连接数
� poolMaximumIdleConnections - 特定时间里闲置的连接数
� poolMaximumCheckoutTime - 在连接池强行返回前,一个连接可以进行‘检出’的总计时间
� poolTimeToWait - 这是一个底层的设置,给连接一个机会去打印 log 状态,并重新尝试重新连接,
免得长时间的等待。
� poolPingQuery - Ping Query 是发送给数据库的 Ping 信息,测试数据库连接是否良好和是否准备好了
接受请求。默认值是“NO PING QUERY SET” ,让大部分数据库都不使用 Ping,返回一个友好的错
误信息。
� poolPingEnabled - 设置 PingQuery 是否可用。如果可用,你可以使用一个最简单的 SQL 语句测试一
下。默认是:false
� poolPingConnectionsNotUsedFor - 配置 poolPingQuery 多长时间可以用。通常匹配数据库连接的超
时,避免无谓的 ping。默认:0,表示随时允许 ping,当然,必须在 poolPingEnabled 设为 true的前
提下。
I JNDI - 这个数据源实现是为了准备和 Spring 或应用服务一起使用,可以在外部也可以在内部配置这个
数据源,然后在 JNDI 上下文中引用它。这个数据源配置只需要两上属性:
� initial_context - 这 个 属 性 是 被 用 于 上 下 文 从 InitialContext 中 ( 比 如 :
initialContext.lookup(initial_context))查找。这个属性是可选的,如果被省略,InitialContext 将会直
接查找 data_source 属性。
� data_source- 这是数据源实例能搜索到的上下文路径。它会直接查找 initial_context 搜索返回的值 ,
如果 initial_context 没有值的庆,直接使用 InitialContext 查找。
MyBatis 3 用户指南中文版
曾令祝 18
像数据源其它配置一样,可以使用以‘env.’属性直接设给 InitialContext,例如:
� env.encoding=UTF8
这样就可以把值为‘UTF8’的属性直接代入 InitialContext 实例化的构造器。
相关文章推荐
- 字符集 编码
- Gallery滑动惯性
- SpringMVC数据格式转换报错:rejected value [065966] error in object 'command' on field 'imgNumber'
- NSArray/NSMutableArray
- Caffe重新编译
- iOS开发常用开源框架——网络
- Picasso 实现图片的比例缩放
- 生成树形结构的json字符串代码(c#)供前端angular tree使用.
- iptables防火墙配置工具ShoreWall的安装和使用实例
- mac下eclipse的使用
- 从需求出发来看关系模型与非关系模型--关系模型与非关系模型概述
- Json对象与Json字符串互转(4种转换方式)
- 2016年5月热门IT职位的推荐
- Android6.0动态权限
- ubuntu运维--网络配置
- nginx/tengine限制流量如何配置
- cocos2d-x windows环境下配置
- this的绑定规则
- IPV6的地址
- Python - Django分布式Celery使用