前言: 其实这个问题看着很简单,就是mapper接口的实例创建失败。 因为mapper文件没读到或者mapper文件有错误:比如namespace写错 ,网上查这个问题,百度一大堆基本都差不多,没有解决。
IDE:intelliJ idea
解决方法:是IDE的锅啊!
答:哦,原来是创建mapper接口对应的xml文件的文件夹的时候导致的问题,比如创建一个com.sandy.dao文件夹,直接创建的时候一次性输入com.sandy.dao, 那么有可能导致maven编译后路径解析不正常。
所以换一种姿势:先创建com,再在com上右键new package,输入文件夹名称,一级一级向下的手动创建,这样就不会导致maven编译后的路径出错啦。步骤如下图:
一:先创建com文件夹
二:在创建好的com文件夹右键,再次创建文件夹,输入文件夹名称:sandy
在创建好的com.sandy文件夹右键 创建文件夹,输入文件夹名称:dao, 这样com.sandy.dao结构的目录就创建好了,这样maven就能正确的解析了!
其实定位这个问题,直接去看target文件夹目录结构就知道了,正确的情况下UserDao和UserDao.xml文件会被编译到同一文件夹下,如下图:
最后附上解决此问题的参考来源: