相关推荐recommended
Springboot 多模块(A依赖B)集成mybatis , mybatis.mapper-locations 配置多个mapper路径配置
作者:mmseoamin日期:2023-12-11

文章目录

    • 一、问题概述
    • 二、问题分析

      一、问题概述

      最近在用SpringBoot 多模块 集成mybatis,模块A 依赖于模块B, 模块A 和模块B 各自有各自的业务逻辑和mapper 文件,模块A 的mapper xml 文件存放在resource 下的 mybatisMapper 文件夹,模块B 的mapper xm 文件存放在 B 模块的resource 下的 mapper 文件夹, 打包时以A 模块为主,B 以jar 包方式被A 依赖。当SpringBoot 应用启动时,一直 报错

      .BindingException: Invalid bound statement (not found): 
      

      二、问题分析

      mybatis 是一个重要的持久化框架,只要通过sql 就可以实现数据的增删改查,原理本质上是通过mapper 接口层和 xml 文件做对应,xml 里的namespace 对应包名,方法对应mapper 接口里的方法名。

      特别注意两点:

      1. mapper 接口的文件名默认要和xml 的文件名保持一致

      2. mapper xml 文件所在包路径要和mapper 接口文件在同一包下,如果不在同一包下,则需要从yml 里面进行配置mapper-locations

      例如:

       mybatis:
          mapper-locations: classpath:mybatisMapper/*Mapper.xml
      

      但要注意一点: 如果A 模块依赖B 模块,A 为启动类,B模块里面有自己的xml ,则要想实现A 能访问到B 模块下xml 则需要在A 模块下做如下配置:

      mybatis:
         mapper-locations: classpath:mybatisMapper/*Mapper.xml, classpath*:apper/*Mapper.xml
      

      classpath 和 classpath 区别: classpath:只会到你的class路径中查找找文件; classpath:不仅包含class路径,还包括jar文件中(class路径)进行查找.**