@Mapper和@Repository区别
相同點:两者都是用在Dao上,功能其实差不多,细微区别如下;
不同点:
@Mapper是Mybatis自带的一个注解。不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。
@Repository是Spring提供的一个注解。使用后,需要在启动类上加@MapperScan(***)来表明Mapper类的位置,否则扫描不到 。
其实就是@Repository多了一个配置扫描地址的步骤mapperScan。
如果不配扫描地址,就会报错:
Field userMapper in com.liu.service.UserServiceImpl required a bean of type 'com.liu.mapper.UserMapper' that could not be found.
找不到bean,这是因为项目启动的时候没有去扫描使用@Repository注解的文件,所以使用@Repository需要配置扫描地址。
但在idea中,使用@Repository可以消除在业务层中注入mapper对象时的错误