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

使用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 应用像上面例子中那样配置数据源。但是,这并不是必须的。需要清楚的是:只
要使用了懒加载,才必须使用数据源。数据源类型有三种:UNPOOLEDPOOLEDJNDI
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 实例化的构造器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值