[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]mybatis多数据源,xml文件扫描多个路径的写法

上一篇:[备忘]mybatis多数据源,报错NoUniqueBeanDefinitionException
下一篇:[备忘]netty 耗时任务,不要用eventLoop线程执行。

添加日期:2021/4/21 20:00:14 快速返回   返回列表 阅读928次
(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()]);
    }

 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved