zoukankan      html  css  js  c++  java
  • SpringBoot+Mybatis加载Mapper.xml文件的两种方式

    前言:我们在平常工作中用到mybatis去加载Mapper.xml文件,可能mapper文件放的路径不一样,由此我们需要配置多个路径,幸运的是Mybatis支持我们配置多个不同路径。现在介绍两种方法。

    最近在整合shardingsphere 用到所以总结一下。

    一、配置文件:

    SpringBoot和Mybatis整合已经天然支持这种方式,只需要在配置文件添加多个路径用逗号隔开

     
    mybatis:
      mapper-locations: classpath*:com/pab/cc/fas/mapper/*Mapper*.xml,classpath*:com/pab/cc/ces/mapper/*Mapper*.xml,classpath*:com/pab/cc/ams/mapper/*Mapper*.xml
      type-aliases-package: com.urthink.upfs.springbootmybatis.entity
      #IDENTITY: MYSQL #取回主键的方式
      #notEmpty: false #insert和update中,是否判断字符串类型!=''
      configuration:
        #进行自动映射时,数据以下划线命名,如数据库返回的"order_address"命名字段是否映射为class的"orderAddress"字段。默认为false
        map-underscore-to-camel-case: true
        # 输出SQL执行语句 (log4j2本身可以输出sql语句)
     
     

    二、Javabean配置

    主要用到的是SqlSessionFactoryBean的setMapperLocations(),这个方法需要传入resource数组。

     public SqlSessionFactory sqlSessionFactory() {
            SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
            sqlSessionFactoryBean.setDataSource(dataSourceOne());
            sqlSessionFactoryBean.setMapperLocations(resolveMapperLocations());
            return sqlSessionFactoryBean.getObject();
        }
     
        public Resource[] resolveMapperLocations() {
            ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
            List<String> mapperLocations = new ArrayList<>();
            mapperLocations.add("classpath*:com/pab/cc/fas/mapper/*Mapper*.xml");
            mapperLocations.add("classpath*:com/pab/cc/ces/mapper/*Mapper*.xml");
            mapperLocations.add("classpath*:com/pab/cc/ams/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()]);
        }
     
    早年同窗始相知,三载瞬逝情却萌。年少不知愁滋味,犹读红豆生南国。别离方知相思苦,心田红豆根以生。
  • 相关阅读:
    葡萄城报表介绍:多数据源报表
    葡萄城报表介绍:报表打印
    葡萄城报表介绍:财务报表分析
    葡萄城报表介绍:数据钻取
    用递归法计算斐波那契数列的第n项
    奋进
    //java递归调用输出一个目录下的所有子目录及文件名称 (最新增加)
    分享下通过java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里(同时将不会出现覆盖问题和重复读入问题)
    $_SERVER函数获取的内容解释
    mysql数据库忘记密码
  • 原文地址:https://www.cnblogs.com/shanheyongmu/p/15560883.html
Copyright © 2011-2022 走看看