2021120101_@Mapper和@MapperScan注解以及共存
目录1、@Mapper、@MapperScan注解2、报错使用场景1、@Mapper、@MapperScan注解@Mapper注解:使用:直接在接口类上使用,包是:org.apache.ibatis.annotations.Mapper作用:为有此注解的接口生成动态代理类,并且注入到spring容器中。@MapperScan注解:使用:在启动类上配置,配置的是持久层接口的包路径,标注批量生成此包下
目录
1、@Mapper、@MapperScan注解
@Mapper注解:
使用:直接在接口类上使用,包是:org.apache.ibatis.annotations.Mapper
作用:为有此注解的接口生成动态代理类,并且注入到spring容器中。
@MapperScan注解:
使用:在启动类上配置,配置的是持久层接口的包路径,标注批量生成此包下的接口的动态代理类,并且注入到容器中。
2、报错使用场景
问题描述:使用的是mybatis-plus和springmvc、spring、springboot、springcloud,在dao也就是Mapper接口上配置了@Mapper注解,当时不知道启动类还配置了@MapperScan注解,进行批量指定所生成的Mapper接口动态代理接口类,所以开始的时候没有在@MapperScan直接我新建的dao包,就报错,但是有@Mapper注解。
1、只使用@Mapper注解,不使用@MapperScan注解。会扫描@Mapper注解所在接口,生成动态代理类,注入到Spring容器中。
2、只使用@MapperScan注解,不使用@Mapper注解。会扫描@MapperScan注解配置的包下面的接口生成动态代理类,注入到Spring容器中。
3、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中有配置包路径,那么可以正常使用。
4、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中没有配置包路径,那么会报错,解决办法,就是在@MapperScan注解中配置正确路径下的包即可。
更多推荐
所有评论(0)