(1)不同数据源的xml文件,放一个目录是没问题的。不用怀疑,我试过了。 (2)每个数据源都用不同的包名,当然啥毛病没有了。 (3)如果一个数据源的xml文件,放在了多个路径下,那么使用逗号分隔是不行的。
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/aaa/*.xml,classpath:mybatis/mapper/bbb/*.xml,")); 如上的写法是不行的,会报not found。
需要传数组进去,参考写法:
SqlSessionFactoryBean bean= new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(resolveMapperLocations()); return bean.getObject();
public Resource[] resolveMapperLocations() { ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(); List<String> mapperLocations = new ArrayList<>(); mapperLocations.add("classpath*:com/aaa/mapper/*Mapper*.xml"); mapperLocations.add("classpath*:com/bbb/mapper/*Mapper*.xml"); mapperLocations.add("classpath*:com/ccc/mapper/*Mapper*.xml"); List<Resource> resources = new ArrayList(); if (mapperLocations != null) { for (String mapperLocation : mapperLocations) { try { Resource[] mappers = resourceResolver.getResources(mapperLocation); resources.addAll(Arrays.asList(mappers)); } catch (IOException e) { // ignore } } } return resources.toArray(new Resource[resources.size()]); }
|