SpringBoot整合Mybatis-Plus报错org.apache.ibatis.binding.BindingException

摘要:
是映射器接口和映射器。xml在同一个包中?例如,接口名称为NameMapper。Java语言对应的xml应该是NameMapper。xmlmapper xml的名称空间是否与mapper接口的包名称一致?检查配置文件的特定字母是否写入错误。启动类的扫描路径是Mapper的路径。您可以在不写入包名称的情况下进行扫描,但会报告错误。
SpringBoot整合Mybatis-Plus报错org.apache.ibatis.binding.BindingException

Mapper接口,被Spring注入后,却无法正常的使用mapper.xml的sql;你的接口已经成功的被扫描到,但是当Spring尝试注入一个代理(MyBatista实现)的实现类后,却无法正常使用。这里的可能发生的情况有如下几种;

接口已经被扫描到,但是代理对象没有找到,即使尝试注入,也是注入一个错误的对象(可能就是null)
接口已经被扫描到,代理对象找到了,也注入到接口上了,但是调用某个具体方法时,却无法使用(可能别的方法是正常的)

排查方法:

  • 网上一搜博客很多,说的也是大同小异,最重要的一点就是检查配置,肯定是配置弄错了,从头到尾的细心检查。

  • mapper接口和mapper.xml是否在同一个包(package)下?名字是否一样(仅后缀不同)?

    比如,接口名是NameMapper.java;
    对应的xml就应该是NameMapper.xml
    
  • mapper.xml的命名空间(namespace)是否跟mapper接口的包名一致?

    比如,你接口的包名是com.abc.dao,接口名是NameMapper.java,
    那么你的mapper.xml的namespace应该是com.abc.dao.NameMapper
    
    <mapper namespace="com.cn.routine.mapper.UserMapper">
    
  • 接口的方法名,与xml中的一条sql标签的id一致

    比如,接口的方法List<User> findAll();
    那么,对应的xml里面一定有一条是<select   resultMap="**">****</select>
    
  • 如果接口中的返回值List集合(不知道其他集合也是),那么xml里面的配置,尽量用resultMap(保证resultMap配置正确),不要用resultType

  • 如果你的项目是maven项目,请你在编译后,到接口所在目录看一看,很有可能是没有生产对应的xml文件,因为maven默认是不编译的,因此,你需要在你的pom.xml的里面,加这么一段,mapper.xml没有按照传统的maven架构进行放置

    <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                        <include>**/*.properties</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.xml</include>
                        <include>**/*.properties</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    
  • 随意在xml文件中加一个空格或者空行然后保存。

  • 检查配置文件(yml文件)具体的字母有没有写错。

  • 启动类的扫描路径是Mapper的路径,少写包名能扫描到但是会报错。

    @MapperScan("com.cn.routine.mapper")
    public class RoutineApplication {
        public static void main(String[] args) {
            SpringApplication.run(RoutineApplication.class, args);
        }
    }
    
    错误包名:@MapperScan("com.cn.routine")
    

参考文章

免责声明:文章转载自《SpringBoot整合Mybatis-Plus报错org.apache.ibatis.binding.BindingException》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring Boot 知识笔记(定时任务与异步)Wireshark查找与标记数据包下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6956206.html  前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(七)——MyBatis延迟加载 1.什么是查询缓存 mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能。 mybatis提供一级缓存和二级缓存。 一级缓存...

IP地址查询接口及调用方法

设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 搜狐IP地址查询接口:http:/...

Android 脚本替换PackageName

原文简书地址:http://www.jianshu.com/p/dca9c323c686 1 前言 平时如果想要替换包名一般是在AS中右键Rename进行操作。但是如果遇到一份代码希望导出几种不同的包名(不是ApplicationId),并且代码还会持续更新,这时候就需要使用脚本在打包时自动导出成不同包名的apk。 有的人会说直接可以在build.grad...

Winform中对自定义xml配置文件进行Xml节点的添加与删除

场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100532137 在上面已经对xml配置文件对节点能进行读取与写入之后 ,实现对节点元素的 添加与删除。 关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。大量...

一个webservice的初级例子

    首先,我们必须了解什么是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有函数可供外部客户调用(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明...

idea中添加web.xml配置文件与tomcat启动中遇到的web.xml文件找不到的问题

1,如何在idea中向war项目中添加web.xml的配置文件 idea通过maven创建war项目时没有指定是webapp导致创建出来的项目没有webapp的文件夹。其实war项目中都是在"项目名/src/main"目录下 只要在这个项目下创建webapp/WEB-INF/web.xml就行了 2,如果你没有把web.xml放在"项目名/src/main...