是否可以选择Mapper在Mybatis中执行?
我正在使用动态路由数据源并将其作为参数提供给sqlSessionFactory - 它正在运行。
但问题是,不同的数据库可能需要其他SQL查询(差异非常小,但存在差异)。
是否可以创建动态路由sqlSessionFactory
- 并向其提供其他包映射器?
答案 0 :(得分:0)
这是获取会话工厂的方法:
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
在 mybatis-config.xml 中声明了一些内容,其中包括数据源和映射器。
然后创建另一个Mybatis配置文件(带有自己的日期源和映射器)并动态选择文件来构建会话工厂。您仍然可以在打开会话时提供连接,但我建议使用工厂提供的隐式连接,因为它将与映射器匹配。 (除非这是一个复杂的应用程序,您需要重用连接,例如:完成一个事务)