z357904947 / DataSource

11 stars 3 forks source link

关于代码使用mybatis xml方式失效问题 #1

Open ghost opened 5 years ago

ghost commented 5 years ago

您好! 看了您的代码,给我启发很大,但是在我自己编写时出现了一个问题。 您的代码通过@Select注解时,可以正常运行,我换成xml形式,就提示“org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.demo.sys.mapper.DataSourceMapper.getDataSourceByDbid”。

我可以保证我的xml形式的代码,没有问题,在不使用数据源切换的时候,是可以使用的,但是加上数据源切换,就出现上述报错,不知道您是否遇到过? 谢谢!

z357904947 commented 5 years ago

这种方式,应该不会涉及到使用mapper.xm找不到的问题,你可以看下xml是否被编译到类路径下,我又一次遇到这个问题,在target文件夹里没有xml,导致一直找不到。这种方式比较复杂,后来我在mybatisplus上发现了一个同样是baomidou的开源工具dynamic-datasource,可以更方便的完成数据源切换,地址:https://github.com/baomidou/dynamic-datasource-spring-boot-starter

ghost commented 5 years ago

@z357904947 谢谢回复!,已经解决! `@Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dynamicDataSource());

    sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    //设置sql配置文件路径
    **sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocations));**
    return sqlSessionFactoryBean.getObject();
}`

指定mapper的xml文件位置就可以了!