java - 使用 MyBatis,如何在不编写配置文件(即以编程方式)的情况下构建 SqlSessionFactory?

标签 java annotations mybatis

我正在尝试使用注释为使用 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/

相关文章:

spring - 使用 Spring DispatcherServlet 自定义 404

java - mybatis:将映射器接口(interface)与 XML 配置一起用于全局参数

iphone - Titanium - 自定义 map 注释气泡?

java - 从 stanford core nlp 依赖表示中提取主要语义元素

java - @Autowired - 没有为依赖找到符合条件的 bean

ibatis - 是否有任何类似于 MyBatis 中的 Criteria API 的功能,或者任何像 QueryDSL 这样的包装器来提供该功能?

java - mybatis查询中需要返回SINGLE列Date值

java - ORM 和对象映射之间的区别?

java - 将日期格式 DD-MON-YYYY 更改为 DD/MM/YYYY

java - 线程安全写入同一文件