首页 > 解决方案 > 直接从现有 Connection 创建 SqlSession

问题描述

我正在使用现有的 Java 代码,其中在已部署的系统上有一个现有的 JDBC 连接池机制和一个已经存在的设置来获取 JDBC 连接。我想利用它来创建一个 MyBatis SqlSession 对象,而无需创建配置、数据源和其他东西

我有已经创建java.sql.Connection对象的代码被赋予了所需的资源。我想利用它并获取该SqlSession对象并从那时起使用 MyBatis。

我不希望 MyBatis 管理连接池、确定使用哪个数据源等。这可能吗?

标签: javajdbcmybatis

解决方案


恐怕您无法避免创建Configuration对象。它由内部 mybatis 机器使用,例如执行程序。但即使你可以,它也不会对你有太大帮助。在这种情况下,您将需要自己实现大部分Configuration功能,因此这样做没有意义。

你的主要目标是能够使用SqlSessionFactory.openSession(Connection connection)方法。为此,您需要拥有SqlSessionFactory. 最简单的方法是Configuration像 mybatis文档中描述的那样创建:

TransactionFactory transactionFactory = new JdbcTransactionFactory();

Environment environment = new Environment("development", transactionFactory, dataSource);

Configuration configuration = new Configuration(environment);

// set properties to configuration here

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(configuration);

现在,如果您的连接池确实实现DataSource了,您可以直接使用它来创建环境。如果没有,您需要在您的池周围创建一个适配器,该适配器实现javax.sql.DataSource.


推荐阅读