有关于 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 的报错。区别在于,前者 @Mappermybatis 的注解,添加后即不需要再通过 @MapperScan 引入,可以自动生成 bean 注入到 services 中;而 @Repository 添加后还是需要通过 @MapperScan 引入,否则扫描不到。

这边按照教程里添加了 @MapperScan 自动扫描需要注入的 Mapper bean,所以添加 @Repository 就好了。执行仍然报错找不到 userMapper 的 Bean 对象,替换成 @Mapper,依然报错。替换成 @Mapper 再将 @MapperScan 注释掉就可以了。然后就发现了 @MapperScan 路径错误,将其修正之后再开启,好了。

这次测试也发现,其实 *mapper.xml 文件并不是必要的,可能在一些自定义 sql 的情况才需要添加。

xml 文件在 mybatis-plus 简单场景下非必要