标签:iba url close int blog 文档 override 打开 需要
1.environments:MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
1):如何配置
<environments default="development"> <!--默认使用的环境 ID(比如:default="development")。--> <environment id="development"><!--每个 environment 元素定义的环境 ID(比如:id="development")。--> <transactionManager type="JDBC"/><!--事务管理器的配置(比如:type="JDBC")--> <dataSource type="POOLED"><!--数据源的配置(比如:type="POOLED")。--> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments>
2):transactionManager:在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]")
<transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager>
提示:使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置,这个两个分别对应JdbcTransactionFactory类生成的JdbcTransaction 对象实现和 ManagedTransactionFactory类生成的ManagedTransaction 对象实现
A:自定义事务管理器,需要实现TransactionFactory接口跟Transaction接口,其中TransactionFactory接口已经被JdbcTransactionFactory类跟ManagedTransactionFactory类实现,我们可以直接实现接口或者使用已有的实现类生成的对象,这里我们使用已有的实现类生成的对象JdbcTransaction类
public class MyTransaction extends JdbcTransaction implements Transaction { public MyTransaction(DataSource ds, TransactionIsolationLevel desiredLevel, boolean desiredAutoCommit) { super(ds, desiredLevel, desiredAutoCommit); } public MyTransaction(Connection connection) { super(connection); } //获取连接 @Override public Connection getConnection() throws SQLException { return super.getConnection(); } //提交 @Override public void commit() throws SQLException { super.commit(); } //回滚 @Override public void rollback() throws SQLException { super.rollback(); } //关闭 @Override public void close() throws SQLException { super.close(); } //超时时间 @Override public Integer getTimeout() throws SQLException { return super.getTimeout(); } }
B:在mybatis配置文件中注册自定义事务管理
<!--type:自定义类的全限定类名--> <transactionManager type="com.james.mybatis.transaction.MyTransaction"/>
3):dataSource:使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。数据源配置是可选的,但如果要启用延迟加载特性,就必须配置数据源。有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")
2.databaseIdProvider:MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性
1):为了支持多厂商特性,mybatis配置文件中使用<databaseIdProvider type="DB_VENDOR" />就能解决
2): DB_VENDOR 实现会将 databaseId 设置为 DatabaseMetaData#getDatabaseProductName() 返回的字符串。 由于通常情况下这些字符串都非常长,而且相同产品的不同版本会返回不同的值,你可能想通过设置属性别名来使其变短:
<databaseIdProvider type="DB_VENDOR"> <property name="SQL Server" value="sqlserver"/> <property name="DB2" value="db2"/> <property name="Oracle" value="oracle" /> </databaseIdProvider>
在提供了属性别名时,databaseIdProvider 的 DB_VENDOR 实现会将 databaseId 设置为数据库产品名与属性中的名称第一个相匹配的值,如果没有匹配的属性,将会设置为 “null”。 在这个例子中,如果 getDatabaseProductName() 返回“Oracle (DataDirect)”,databaseId 将被设置为“oracle”。
3):还可以通过实现接口 org.apache.ibatis.mapping.DatabaseIdProvider 并在 mybatis-config.xml 中注册来构建自己的 DatabaseIdProvider,把配置文件的Type设置为自定义类的全限定类名。
3:mappers:告诉 MyBatis 到哪里去找映射文件;可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等
<!-- 使用相对于类路径的资源引用 --> <mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>
<!-- 使用完全限定资源定位符(URL) --> <mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper url="file:///var/mappers/BlogMapper.xml"/> <mapper url="file:///var/mappers/PostMapper.xml"/> </mappers>
<!-- 使用映射器接口实现类的完全限定类名 --> <mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/> <mapper class="org.mybatis.builder.PostMapper"/> </mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 --> <mappers> <package name="org.mybatis.builder"/> </mappers>
标签:iba url close int blog 文档 override 打开 需要
原文地址:https://www.cnblogs.com/jenne-blog/p/13118193.html