在我的Spring Boot应用程序中,我需要连接到多个数据源(我知道这是一种反模式)。因此,我配置了不同的数据源和相应的SqlSessionFactories。使用MapperScannerConfigurer,我可以指向不同的程序包。因此,例如,将包com.dat.dao1中的接口绑定到SqlSessionFactory1,并将com.dat.dao2中的接口绑定到SqlSessionFactory2。我想知道是否有方法在方法级别具有此绑定,以便可以确定哪个SqlSessionFactory支持哪个方法。有没有可供我选择SqlSessionFactory甚至SqlSession的注释?
答案 0 :(得分:1)
mybatis中不支持此功能。如果要覆盖此行为,则需要更改MapperProxy的行为。您可以使其invoke
方法对某些注释敏感,并使用适当的SqlSession
。
虽然这很简单,但是需要更多的精力来使mybatis使用您的实现。为了使用您的实现而不是现有的MapperProxy
,您需要更改
MapperProxyFactory
创建类而不是MapperProxy
MapperRegistry
使用您MapperProxyFactory
MapperScannerConfigurer
使用您的MapperRegistry
因为所有这些类都是硬编码的并且是不可配置的。
因此,使用两个单独的MapperScannerConfigurer
来扫描不同的软件包或配置了不同的annotationClass
会容易得多。