在项目中我需要将事务隔离级别设置为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连接,我已经将它设置为这个隔离级别?
答案 0 :(得分:1)
这取决于您的需求,但您可以例如:
DataSource
,在返回连接之前,可以在其上设置所需的隔离级别。然后,您可以在environment中配置它,而不是MyBatis提供的那些; 答案 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);
}
...
}