参考
mybatis-plus关于@Mapper、@Repository、@MapperScan、xml文件的相关问题_mybatisplus repository-CSDN博客
UserMapper上不加@Mapper,启动类上添加@MapperScan("com.atguigu"),就可以将指定包下的所有的mapper接口所动态生成的代理类交给IOC容器管理。需要注意的是idea提示注入问题,实际上可以正常运行,要是不想idea提示可以在UserMapper上加上@Repository注解。
在UserMapper接口上加上@Mapper表示被容器识别到,创建这个的代理类,这样就自动将代理类交给IOC容器管理。另外有了@Mapper就不需要@MapperScan("com.atguigu"),两者作用一样,@Mapper这并不是配置bean的含义,切勿混淆。
容易混淆的是:我们一般需要配置为bean,然后扫描才能使用它。这里我们只进行了扫描而没有去配置bean。我们这里使用的是自动代理,扫描也是扫描哪一个需要创建代理类,并不是扫描bean,故不需要配置bean。
说明:springboot设置了自动扫描的包,会扫描到@Mapper的类,创建这个的代理类,这样就自动将代理类交给IOC容器管理。
如果不加@Mapper就需要在启动类上添加@MapperScan("com.atguigu")就可以将指定包下的所有的mapper接口所动态生成的代理类交给IOC容器管理。
@Repository那是基于代码的开发,简单来说就是手写 JDBC,在dao的impl中使用注入bean的方式,使用@Repository配置了bean在spring中需要设置扫描,在springboot中不需要额外设置扫描。