今天在给项目添加mysql数据库的时候出了点小问题,捣弄了半小时解决了。
描述是Controller类中没有检测到本应自动装载的数据库的Mapper类。
@Controller
public class HttpAPIController {
//此处Mapper类应该被自动装载
@Autowired
private ClientMapper clientMapper;
…………
}
上网找了些资料,例如在Mapper接口中填加@Mapper()注解(另一种方法是在启动类中添加@MapperScan(xxx.xxx.mapper),参数为Mapper接口所在的包)。详情可以看这篇博客:https://blog.csdn.net/weixin_42585386/article/details/107605031 但这不是我的项目的问题,于是我只好苦逼地继续debug。
后来在尝试在启动类中加@MapperScan注解的时候发现idea死活都不给提醒且没有找到该注解,于是我考虑是否是pom中依赖出现问题。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
这是我原本添加的mybatis依赖,是在maven官网搜的(https://mvnrepository.com/search?q=mybatis)。大家添加的时候一定要看清再添加。
正确依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
我们点进去看一下
果然除了之前的错误依赖之外,还有很多与springboot集成的依赖(图中并不完全)。重新启动项目,成功运行。
有关mybatis数据库添加的报错问题,还可以检查下yaml(property)文件中的配置,Mapper的xml文件中是否修改namespace和sql语句等。