如何将连接传递给Mybatis

时间:2014-06-11 10:00:36

标签: java sql-server jdbc mybatis isolation-level

在项目中我需要将事务隔离级别设置为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连接,我已经将它设置为这个隔离级别?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以扩展JdbcTransactionFactory以及JdbcTransaction类,并传递您喜欢的任何参数,如documentation中所述:

  

可以放置您自己的完全限定类名或Type Alias   指的是您自己的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);
  }
  ...
}