我正在尝试使用注释为使用 MyBatis 实现的 DAO 编写单元测试。我想实例化该 DAO 以针对我的(内存中)数据库进行单元测试。但是,我看到实例化它的唯一方法是通过 SqlSessionFactory ,而我看到实例化其中一个的唯一方法是使用 SqlSessionFactoryBuilder ,仅使用其方法配置文件。
但是,在我的单元测试中,我已经与内存数据库建立了连接,我可以使用它来以某种方式实例化映射器吗?如果我需要进行测试,这还允许我稍后模拟或监视连接
。
最佳答案
SqlSessionFactory
类有一个 openSession(Connection 连接)
方法。您可以使用它通过内存数据库的 Connection
来检索 SqlSession
。
您可以通过编程方式构建 SqlSessionFactory
,而无需使用配置文件,代码如下:
Environment environment = new Environment("ID", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMappers(mappersPackageName);
// Other configuration tweaks
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(configuration);
然后您可以模拟或 stub DataSource
以返回所需的Connection
实例。
关于java - 使用 MyBatis,如何在不编写配置文件(即以编程方式)的情况下构建 SqlSessionFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13475554/