您的位置:首页 > 其它

mybatis学习笔记(十二) 映射配置文件详解

2016-05-20 18:03 591 查看
使用mybatis开发项目,mapper配置文件是核心,里面一些配置项还是需要理解的。

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 实例化的构造器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: