[英]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连接传递给我,因此我已经将其设置为隔离级别?
这取决于您的需求,但是您可以例如:
DataSource
,该DataSource
在返回连接之前为其设置所需的隔离级别。 然后,您可以在环境中配置它,而不是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.