繁体   English   中英

如何通过与Mybatis的连接

[英]how to pass a connection to Mybatis

在一个项目中,我需要将事务隔离级别设置为SNAPSHOT,我知道可以在Java中使用

System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);

// STEP 4: Execute a query
System.out.println("Creating statement...");
conn.setTransactionIsolation(4096);
conn.setAutoCommit(false);

不幸的是,我没有在Mybatis中找到这种可能性,所以有没有办法将Mybatis的jdbc连接传递给我,因此我已经将其设置为隔离级别?

这取决于您的需求,但是您可以例如:

  • 直接在数据库中设置默认事务隔离级别,而不必理会Java中的设置;
  • 您可以创建自己的DataSource ,该DataSource在返回连接之前为其设置所需的隔离级别。 然后,您可以在环境中配置它,而不是MyBatis提供的那些。
  • 在某些情况下, MyBatis允许您在打开会话时指定连接或隔离级别 您可能需要阅读文档,以了解您的选择。

您可以扩展JdbcTransactionFactory以及JdbcTransaction类,并按照文档中的说明传递您喜欢的任何参数:

可以放置您自己的完全合格的类名或类型别名,该类名或类型别名引用您自己的TransactionFactory接口实现

实例化后,将在XML中配置的任何属性传递给setProperties()方法。

<transactionManager type="com.example.CustomTansactionFactory">
  <property name="isolationLevel" value="4096"/>
</transactionManager>

使用这两个界面,您可以完全自定义MyBatis如何处理事务。

public class CustomTansactionFactory extends JdbcTransactionFactory {
  ...
  public Transaction newTransaction(Connection conn, boolean autoCommit) {
    return new CustomJdbcTransaction(conn, autoCommit, isolationLevel);
  }
  ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM