MyBatis 配置2

来源:互联网 发布:linux下zip 编辑:程序博客网 时间:2024/06/11 09:34

1-ObjectFactory(对象工厂)

说明:当创建结果集时,MyBatis会使用要给对象工厂来完成创建这个结果集实例。在默认情况下,MyBatis会使用其定义的对象工厂:DefaultObjectFactory(org.apache.ibatis.reflection.factory.DefaultObjectFactory)来完成对应的工作。MyBatis允许注册自定义的ObjectFactory。如果自定义就要实现接口org.apache.ibatis.reflection.factory.ObjectFactory,并给予配置。在更多情况下,都会考虑继承系统已经实现好的DefaultObjectFactory,通过一定的改写来完成我们所需要的工作。

插件

2-environments (运行环境)
在MyBatis中,运行环境主要的作用是配置数据库的信息,它可以配置多个数据库,一般一个就够了。它下面又分事务管理器(transactionManager)和数据源(dataSource)。
在大部分情况下会采用Spring对数据源和数据库的事务经行管理。

<environments default="development">        <environment id="development">            <transactionManager type="JDBC"></transactionManager>            <dataSource type="POOLED">                <property name="driver" value="${database.driver}"/>                <property name="url" value="${database.url}"/>                <property name="username" value="${database.username}"/>                <property name="password" value="${database.password}"/>            </dataSource>        </environment> </environments>

2.1-transactionManager(事务管理器)
在MyBatis中提供了两个实现类,jdbcTransaction和ManagedTransaction。同时他们要实现接口Transaction(org.apache.ibatis.transaction.Transaction),
这个接口主要有提交(commit) 回滚(rollback),关闭(close) 等方法。
事务管理器配置如下:

 <transactionManager type="JDBC"></transactionManager> <transactionManager type="MANAGED"></transactionManager>
JDBC:使用JdbcTransactionFactory生成的JdbcTransaction对象实现。它是以JDBC的方式对数据库的提交和回滚进行操作。MANAGED:使用ManagedTransctionFactory生成的ManagedTransaction对象实现。它的提交和回滚方法不用任何操作,而是把事务交给容器处理。

2.2-environment 数据源环境
它的主要作用是配置数据库环境,在MyBatis中,数据库通过PooledDataSourceFactory,UnpooledDataSourceFactory和JndiDataSourceFactory三个工厂类来提供,
前两者会产生PooledDataSource,UnpooledDataSource类对象,而JndiDataSourceFactory则根据JNDI的信息拿到外部容器的数据库连接对象。无论如何这三个工厂类,
最后生成的产品都会是一个实现了DataSource接口的数据库连接对象。

 <dataSource type="POOLED"> <dataSource type="POOLED"> <dataSource type="JNDI">
UNPOOLED:采用非数据库池的管理方式,每次请求都会打开一个新的数据库连接,所以创建会比较慢。对性能没有要求的场景中可以使用它。 注意属性前缀为“driver.”,例如: driver.encoding=UTF8。POOLED:利用"池"的概念将JDBC的Connection对象组织起来,它开始会有一些空置,并且已经连接好的数据库连接,所以请求时,无需再建立和验证,省去了创建新的数据实例时所必需的初始化和认证时间。它还控制最大的连接数,避免过多的链接导致系统瓶颈。JNDI:它的实现是为了能在如EJB或服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。这种数据源的配置只需要两个属性:(1)initial_context:用来在InitialContext中寻找上下文。它是个可选属性,如果忽略,那么data_source属性将会直接从InitialContext中寻找。(2)data_source:是引用数据源实例位置上下文的路径。当提供initial_context配置时,data_source会在其返回的上下文中进行查找;当没有提供initial_context时,data_source直接在InitialContext中查找。与其他数据源配置类似,它可以通过添加前缀“env.”直接把属性传递给初始化上下文。例如:env.encoding=UTF8。MyBatis也支持第三方的数据源,例如DBCP数据源,常用的阿里巴巴的数据源等等。

3-databaseIdProvider 数据库厂商标识

databaseIdProvider元素主要是支持不同厂商的数据库,虽然这个元素不常用但是有些系统需要切换数据库时就会用到。
<databaseIdProvider type="DB_VENDOR">       <property name="Oracle" value="oracle"/>       <property name="MySQL" value="mysql"/>       <property name="DB2" value="db2"/></databaseIdProvider>

在MyBatis的sql的XML文件中只要在sql中配置 databaseId=”mysql” 即可。

原创粉丝点击