MyBatis配置文件(七):environments配置

MyBatis中的environments是用来配置环境的,他可以将你的sql语句映射到多种数据库之上。使你不用改变你的sql语句就可以操作不同的数据库。虽然环境配置可以设置多个,但是在使用的时候同时只能选择一个,默认使用的是evvironments中的default属性的参数。下面是一个environments的配置示例:

<environments default="development">
	<environment id="development">
		<transactionManager type="JDBC">
		</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>

enviranments配置说明:

  1. environments中的default属性用来指定当前环境,有development(默认)和work两种模式
  2. environment-id是每种配置的环境ID,有development(默认)和work两种模式
  3. transactionManager中type是指定事务管理器类型,有JDBC和MANAGED两种
  4. dataSource中type指定数据源类型,有UNPOOLED、POOLED和JDNI三种

1、transactionManager事务管理器

注意:事务管理器类型的区别,JDBC以其方式进行数据库的提交和回滚操作,且必须进行commit操作,而MANAGED方式是把事务提交给容器进行处理。

- 自定义事务管理器

1、创建一个事务管理器,继承ManageTransaction或实现JdbcTransaction接口;
2、创建事务管理工厂类,实现TransactionFactory接口,提供事务处理相关的接口;
3、配置自定义事务管理器:

<transactionManager type="com.daily.objectfactory.MyTransactionFactory" />

注意这里加载的是事务管理工厂类,而非事务管理器类,因为在MyBatis中是根据工厂获取实例的。

2、dataSource数据源

MyBatis的DataSource配置有三种内置的数据源类型:

- UNPOOLED

此数据源的实现是每次被请求时简单打开和关闭连接,仅仅是用来配置一下5个属性:

  • driver:JDBC驱动的Java类的完全限定名;
  • url:数据库JDBC URL地址;
  • username:数据库登录名;
  • password :数据库登录密码;
  • defaultTransactionIsolationLecel:默认连接事务隔离级别;

若是可选项,传递属性时,前缀是以 driver. 开头的,是通过DricverManager.getConnection(url,driverProperties)方法传递给数据库驱动的。

- POOLED

此为数据源的连接池实现方式,避免了创建新连接时的必要的初始连接和认证时间。是当前web应用中高效响应的方法。除了上面的数据库基本信息配置之外,还可以有许多属性来配置POOLED数据源:

  • poolMaximumActiveConnections:任意时间正在使用的数量,默认10;
  • poolMaximumIdleConnections:任意时间空闲的连接数;
  • poolMaximumCheckoutTime:强制返回前,池中连接被检查的时间,默认20s;
  • poolTimeToWait:数据连接等待时间,默认20s;
  • poolPingQuery:发送到数据的侦测查询,验证连接是否正常,默认“NO PING QUERY SET”,会引起许多数据库驱动连接由一个错误信息而导致失败;
  • poolPingEnabled:是否开启侦测查询,若开启,需设置合法sql给poolPingQuery,默认false;
  • poolPingConnectionsNotUsedFor:配置poolPingQuery使用间隔时长。可以设置连接超时时间,避免不必要的侦测,默认0;
- JNDI

JNDI数据源的实现是为了使用如spring或应用服务器类的容器,可以集中在外部配置数据源,放置JNDI上下文的引用,只需要配置两个属性:

  • initial_context:从初始环境中寻找环境( 也 就 是
    initialContext.lookup(initial——context)),可选,若被忽略,data_source 属性将会直接以initialContext 为背景再次寻找;
  • data_source:引用数据源实例位置的上下文路径,以由 initial_context查询返回的环境为背景来查找,如果 initial_context 没有返回结果时,直接以初始上下文为环境来查找。

也可以通过名为“env.”的前缀直接向初始上下文发送属性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值