MyBatis-Plus 快速开始中简单的 Demo 遇到的问题归纳
有关于 H2 表结构问题,之前有做过总结:Mybatis-plus 官网的快速开始测试报错:expected "ARRAY, INVISIBLE, VISIBLE, NOT NULL, NULL, AS, DEFAULT, GENERATED..."。一些报表结构 syntax error 的,也在这篇里面,包括使用保留字段 user。
关于 自定义 MP 的 mapper 方法绑定 xml 文件报错:Invalid bound statement (not found) 也做过总结,结论就是尽量直接把 *mapper.xml
文件放在 classpath 下,在项目中就包含 resources
目录。
这次碰到了 userMapper
自动装配对象报错:无法自动装配。找不到 'UserMapper' 类型的 Bean。这个问题解决在 springboot项目mapper无法自动装配,未找到 ‘userMapper‘ 类型的 Bean解决办法(含报错原因)。之前项目是单元测试是没有问题的,猜测与更新使用了 IntellJ IDEA Ultimate 版本有关。使用原来的 community 社区版,果然没有报错了。这个报错实际上并不影响执行,但标红代码不解决对于程序员来说一种折磨。
教程里提到了两个注解 @Mapper
和 @Repository
,这两个注解加到 UserMapper
接口上都可以消除 IDEA 的报错。区别在于,前者 @Mapper
是 mybatis
的注解,添加后即不需要再通过 @MapperScan
引入,可以自动生成 bean 注入到 services 中;而 @Repository
添加后还是需要通过 @MapperScan
引入,否则扫描不到。
这边按照教程里添加了 @MapperScan
自动扫描需要注入的 Mapper bean,所以添加 @Repository
就好了。执行仍然报错找不到 userMapper
的 Bean 对象,替换成 @Mapper
,依然报错。替换成 @Mapper
再将 @MapperScan
注释掉就可以了。然后就发现了 @MapperScan
路径错误,将其修正之后再开启,好了。
这次测试也发现,其实 *mapper.xml
文件并不是必要的,可能在一些自定义 sql 的情况才需要添加。