折腾了两天,没找着原因,原来是大方向错了,记录一下。
【springBoot整合mybatis时自动注入为空 - CSDN App】http://t.csdnimg.cn/ButQb
https://blog.csdn.net/qq_52889967/article/details/122914177
这两个链接是同一个文章,感谢老哥的帖子指点迷津。
根本原因:
在调用serviceImpl中含有mapper操作的方法之前,
不应该new ServiceImpl().function()
应该先@Autowired ServiceImpl serviceImpl,再serviceImpl.function()
具体原理我也不太清楚,大概理解的是:
在ServiceImpl中调用的mapper是@Autowired注入的,这个mapper是bean容器中的,是动态的;
所以调用ServiceImpl中含mapper的方法,就应该@Autowired注入ServiceImpl,得到的serviceImpl也是bean中的,是动态的。
如果是new ServiceImpl()得到的对象是静态的,无法调用动态的mapper。
以上纯属个人理解,如有错误,请批评指正。